当Git diff显示模式更改时是什么意思?

70

我想查看一个未暂存的单独文件的更改。

首先使用 git status 查看所有未暂存的更改,然后例如:

git diff AndroidManifest.xml

但我得到了这个输出:

diff --git a/AndroidManifest.xml b/AndroidManifest.xml  
old mode 100755  
new mode 100644

这是什么意思以及我如何查看特定文件的更改?

2个回答

56
很可能,这个文件的内容没有改变,只是可执行位被清除了。尝试通过向其中添加一个空行等方式实际更改文件,并查看git diff输出的结果。
除了文件内容,Git还记录每个文件可执行位的状态。如果您希望在检出后立即执行脚本,则在Linux系统上这样做很有意义。还请参阅以下两个相关问题:如何使Git忽略文件模式(chmod)更改? 如何在Git中将“旧模式100755新模式100644”的文件从未暂存的更改中删除?

是的,你说得对,我修改了文件,现在它显示出差异。谢谢。 - pedja

25

这意味着文件模式从755更改为644,但内容未被更改。

git diff就是你要找的东西——它显示从未暂存的文件到最后一次提交的更改。 git diff --cached是用于已暂存文件的。


4
我可以避免这个文件模式的更改吗? - ManuelSchneid3r
4
@ManuelSchneid3r 当然可以。Git 不会改变文件的模式,它只跟踪模式更改的事实。要么将其简单地改回原始模式,要么一开始就不要更改它。 - Polygnome

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