git状态显示已更改的文件,但git diff不显示

我已经看过所有类似的问题,但是我已经仔细检查过,并且发生了一些奇怪的事情。

在一台服务器上(使用git 1.8.1的Solaris),我克隆了git存储库,然后将.git文件夹复制到我现有的活动文件中。 这工作完美,我可以跑

git status

然后

git diff [filename]

检查任何不同的文件。

在另一台服务器上(使用git 1.7.6的Solaris),我做的却完全一样

git diff [filename] 

即使文件内容完全不同,也不会显示任何内容。 我还测试了添加一个新文件,然后进行编辑。 同样的问题, git status显示文件已更改,但git diff显示任何内容。 如果我下载更改后的文件并在本地运行diff,则会得到差异输出。


有几个原因为什么git status可能会显示差异,但git diff可能不会。

  • 文件的模式(权限位)已更改 - 例如,从777到700。

  • 换行样式从CRLF(DOS)更改为LF(UNIX)

  • 找出发生的最简单的方法是运行git format-patch HEAD^并查看生成的补丁说什么。


    我将该文件添加到索引中:

    git add file_name
    

    然后跑:

    git diff --cached file_name
    

    你可以在这里看到git diff的描述。

    如果你需要撤销你的git add,那么请看这里:如何在提交之前撤销'git add'?


    对我来说,这与文件权限有关。 有人在我的项目中使用Mac / Linux似乎提交了一些非默认权限的文件,这是我的Windows git客户端无法重现的。 对我来说,解决方案是告诉git忽略文件权限:

    git config core.fileMode false
    

    其他见解:我如何让Git忽略文件模式(chmod)更改?

    链接地址: http://www.djcxy.com/p/6167.html

    上一篇: git status shows changed files but git diff doesn't

    下一篇: How can you undo the last git add?