所以我遇到了一个很奇怪的问题。无论我对某个文件做了什么改变,它总是说有1个删除和1个插入,这是每个文件的整个代码。这不会发生在其他文件中。这种情况最近才开始发生,我不确定是什么原因造成的。有什么想法吗?
如果你需要我,我会进一步解释。
编辑:我想我已经越来越接近搞清楚了。如果我输入git diff
,我会得到类似的结果:
<?php^M^M/*^MPlugin Name: SomeName^MPlugin URI: http://...
所以,它肯定与行结尾有关,但我怎么能摆脱那些?
答案 0 :(得分:3)
Git试图弄清楚文件是文本还是二进制,但有时会得到错误的答案。为什么?很难说没有看到文件。也许你有一个非ascii字符,也许行结尾很奇怪,也许它感到困惑。无论哪种方式,当它出错时,是时候打破.gitattributes
文件以避免混淆。
如果相关的“主”文件被命名为myfile.c
,那么您将创建一个.gitattributes
文件,如下所示:
myfile.c text
如果所有*.c
个文件都是文字,您只需说:
*.c text
请参阅http://git-scm.com/book/ch7-2.html和Why does Git treat this text file as a binary file?以及http://git-scm.com/docs/gitattributes
答案 1 :(得分:2)
事实证明它与git中的任何设置无关,但与文件无关。我发现this answer over at SE通过在VIM中打开文件并输入以下命令来修复它:
:%s/^M/\r/g
(按CTRL+V
然后按CTRL+M
获取^M
)