我一直在尝试很多不同的配置来试图让git来阻止它。我有一个本地文件,在源代码库中有LF(不是CRLF)行结尾:
$ cat -vT Source/watchr.bat
echo OFF
echo ==========================================================
echo ==========================================================
echo The "watchr" command is deprecated.
echo The new command is sidekick.bat
echo " _
echo "| |
echo "| |_ _ _ _ __ ___
注意:没有^ M,所以那里没有CR。这是大约80个文件中的一个,因此提交将在git历史中产生大量不必要的流失。
好了,现在看看git diff:
$ gd -R Source/watchr.bat
+echo OFF^M
+echo ==========================================================^M
+echo ==========================================================^M
+echo The "watchr" command is deprecated.^M
+echo The new command is sidekick.bat^M
+echo " _ ^M
+echo "| | ^M
+echo "| |_ _ _ _ __ ___ ^M
Argh,^ M在每一行。为什么?怎么样?
设置:
$ git config --global core.autocrlf
true
$ git config core.autocrlf
false
$ cat -vT .gitattributes
# Set default behavior to automatically normalize line endings.
* text=
将设置更改为input
(或false
)和auto
(gitattributes)无效,git仍希望在watchr.bat文件中插入CR。我家里的Gitconfig也是autocrlf = true
。我如何让git停止这样做?
平台:git版本1.9.5.msysgit.0,Windows 7.
答案 0 :(得分:3)
你应该尝试:
git config --global core.autocrlf false
(这是我推荐的" Git on Windows (msysgit) - Unix or DOS line termination")
同时检查本地配置:
git config core.autocrlf false
确保您没有.gitattribute
with a core.eol
directive也可以添加\r\n
eol。
答案 1 :(得分:1)
解决这个问题的方法是消除.gitattributes
。我曾尝试在* text=auto
中对.gitattributes
进行评论,但显然没有看到""通过git。我的同事淘汰了那个文件,推了推,然后我拉了它,然后突然间,#34;到处都添加了一堆CR"行为消失了。
我找了一种方法让git看到新更改的.gitattributes
(我做的本地编辑)。无法找到任何可以做到这一点的git命令,所以我不得不假设git会在它做差异时随时检查该文件。似乎并非如此。
也许这是Windows上的git中的一个错误(因为文件观察者在Windows中是冒险的)。