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