如何让git停止尝试在本地文件中插入CR?

时间:2015-01-12 01:13:21

标签: git

我一直在尝试很多不同的配置来试图让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.

2 个答案:

答案 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中是冒险的)。