You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git提交文本文件时为何未遵循.gitattribute规则?

为什么Git接受了不符合换行符规则的提交?

这不是Git的bug,是你误解了.gitattributes里eol规则的作用——它的核心是自动转换换行符,而不是阻止提交不符合特定换行符的文件。

具体来说,你设置的*.bat text eol=crlf规则,Git的实际行为是:

  • 提交时:不管工作区的bat文件用的是LF还是CRLF,Git都会将其转换为LF存储到仓库中;
  • 检出时:从仓库拉取文件到本地工作区时,自动将LF转换为CRLF。

所以你手动把bat文件改成LF后提交,Git会正常将其转成LF存入仓库,这完全符合规则设定。规则并没有限制你工作区的文件必须用CRLF,只是保证最终仓库里的文件是LF,且检出到本地时自动变成CRLF。

如果想要强制工作区的文件必须使用指定的换行符(比如bat文件必须是CRLF),你需要额外配置:

  • 用git diff --check命令手动检查文件中的换行符问题;
  • 配置pre-commit钩子,在提交前自动校验文件的换行符格式,不符合规则就阻止提交。

内容的提问来源于stack exchange,提问作者tribbloid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:38:16