Git无法对我的主要插件文件进行差异比较?

6
所以我遇到了一个相当奇怪的问题。无论我对某个文件做出什么更改,它总是说有1个删除和1个插入,这是每个文件的整个代码。其他文件不会出现这种情况。这种情况最近才开始发生,我不确定是什么原因引起的。有什么想法吗?
如果需要,我可以进一步解释。
编辑:我认为我离找到答案又近了一步。如果我输入git diff,我会得到类似于这样的东西:
Plugin Name: SomeName Plugin URI: http://...
所以它肯定与行尾有关,但我该如何摆脱它们?

5
这听起来像是一个EOL问题。请问文件中使用了哪种行结尾标记,并且你正在使用的操作系统是什么? - Nevik Rehnel
Git没有正确识别换行符吗?它是否将文件视为单行? - Mike B
我正在使用PHPStorm IDE在Windows 7上工作。我的客户告诉我,当他尝试下载文件时,它会将所有内容合并成一行。不确定是否与行结尾有关... - Jared
2
听起来文件当前正在使用Linux行尾(LF)。也许你的IDE正在自动转换行尾? - knittl
没有.gitattributes文件。 - Jared
显示剩余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


嗯,我很感激你的回答,但是我已经尝试过了,结果还是一样。:( - Jared

2

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接