6

所以我遇到了一个非常奇怪的问题。无论我对某个文件进行什么更改,它总是说有 1 个删除和 1 个插入,这是每个文件的整个代码。其他文件不会发生这种情况。这只是最近才开始发生,我不确定是什么原因造成的。有任何想法吗?

如果您需要我,我会进一步解释。

编辑:我想我离弄清楚它越来越近了。如果我输入git diff,我会得到如下信息:

<?php^M^M/*^MPlugin Name: SomeName^MPlugin URI: http://...

所以是的,它肯定与行尾有关,但我怎样才能摆脱那些呢?

4

2 回答 2

3

Git 试图判断一个文件是文本文件还是二进制文件,但有时它会得到错误的答案。为什么?没有看到文件很难说。也许你有一个非ASCII字符,也许行尾很奇怪,也许它很混乱。无论哪种方式,当它出错时,是时候分解一个.gitattributes文件以避免混淆。

如果有问题的“主”文件被命名myfile.c,那么您将创建一个.gitattributes像这样的文件:

myfile.c text

如果所有*.c文件都是文本,你可以说:

*.c text

请参阅http://git-scm.com/book/ch7-2.html以及为什么 Git 将此文本文件视为二进制文件?http://git-scm.com/docs/gitattributes

于 2013-02-11T02:19:29.887 回答
2

好吧,事实证明它与 git 中的任何设置无关,而是与文件有关。我在 SE 上找到了这个答案,通过在 VIM 中打开文件并输入以下命令来修复它:

:%s/^M/\r/g(按CTRL+V然后CTRL+M获取^M

于 2013-02-14T00:52:04.300 回答