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

ulu*_*ulu 4 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
Run Code Online (Sandbox Code Playgroud)

但是,Git GUI的diff工具告诉我所有的行都被改变了,但是我找不到任何区别.与git bash的差异相同.

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

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

我在Windows上.

Aar*_*lla 5

欢迎来到地狱.入住愉快 :-)

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

当你签出文件时,Git进行转换,创建一个看起来正确的本地文件.当你这样做时diff,Git不会转换(因为磁盘上的文件必须正确,为什么它会转换回存中的内容?)现在你会得到不存在的差异.

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

有关: