我在Windows7上工作,为了防止下线问题,我有一个.gitattributes
文件,设置如下(如github help中所述):
* text=auto
*.js text
但是现在,当我提交一个只有
js
行结尾的LF
-文件时,我会收到警告:warning: LF will be replaced by CRLF in XXX.js.
The file will have its original line endings in your working directory.
好吧,这听起来像我的存储库中有
CRLF
和工作目录中的LF
,尽管它应该是(我希望是)完全相反的方式。提交后,js
-文件的行尾仍为LF
。我是错误地阅读了警告还是以错误的方式设置了
.gitattributes
?谢谢!
p.s.我的全局git配置有
autocrlf = true
,但在提交时不应影响eol转换,因为.gitattributes
文件p.p.s
js
文件位于子目录中 最佳答案
您应该禁用autocrlf
–它不会导致这种“情况”,但它确实与gittattributes设置冲突,并且没有添加任何好处。
你的回购协议中的下线转换没有任何问题。您引用的消息告诉您,如果您再次签出此文件(使用这些设置),您的工作目录中将包含crlf。但现在它将留在lf。
如果您想知道回购协议中的行尾信息,请运行以下命令:
git show commit:path/to/file | file -k -
如果你想摆脱这个消息,设置你的编辑器,以保存文件与crlf。或者更好:如果您的所有工具都支持lf endings,请将此repo设置为在签出时使用lf(如果您意外地用crlf保存了一个文件,它仍将正常化):
git config core.eol lf
注意:这可能只有当您将
core.autocrlf
设置为false
时才起作用。