git告诉我,我的文件已经更改,但我看不出有任何区别

时间:2015-02-26 14:57:46

标签: git diff tortoisegit

我刚刚安装了最新的Git(1.9.5),突然它告诉我我的工作树不干净(更改没有暂存),但我看不到任何文件中的任何更改任何差异工具(我试过Tortoise和Visual Studio的内置)。当我运行git status时,它会说:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   inc/i_lab_orders.asp
        modified:   lab_order_list.asp
        modified:   slib/lab_order_lib.asp

然而,Git GUI的diff工具告诉我所有的行都被改变了,但我无法发现任何差异。与git bash的差异相同。

运行git reset --hard根本没有帮助 - 命令执行没有任何问题,但最后我仍然有相同的“已更改”文件。

更新:core.autocrlf为false,core.fileMode也为false。我还注意到,报告要更改的文件正是上次提交时提交的文件。

我在Windows上。

3 个答案:

答案 0 :(得分:5)

欢迎来到地狱。享受您的住宿: - )

您无法看到的差异是行结束。简而言之,您告诉Git将所有行结尾转换为Windows或Unix,并且repo中有一个文件在回购中有不同的行结尾。

当你签出文件时,Git会进行转换,创建一个看起来正确的本地文件。当你执行diff时,Git不会转换(因为磁盘上的文件必须正确,为什么它会转换已经存在于repo中的文件?)现在你得到的差异并非如此那里。

解决方案:确保为每个能够push的开发人员正确配置Git,使用正确的结尾提交文件一次并为任何人创建一个愚蠢的帽子,他们会创建错误行结尾的文件。

相关:

答案 1 :(得分:1)

更改也可能是文件模式,但你可以告诉git忽略这样的事情。

git config core.fileMode false

我建议您使用gitk

在ubuntu上只是

sudo apt-get install gitk

答案 2 :(得分:0)

通过手动删除.git \ rebase-merge-failed文件夹来修复它。谢谢大家试图帮助我。

更新我还怀疑原因是我的.gitattributes文件中有text=auto