2014-03-13 88 views
16

我在我的服务器上运行了几个chmod。现在当我做git diff那里,我看到很多old mode 100644 new mode 100755显示git diff,忽略文件权限更改?

我也改变了一些文件那里。但我只是用git diff来显示文件的变化,忽略文件权限的变化。

我该怎么做?顺便说一句,我不希望GIT忽略这些文件权限更改。其实我想提交它们,我只是想让git diff在特定时刻不显示它们。

回答

7

这将让Git忽略权限:

git config core.filemode false 

将它们过滤在diff结果,但不能忽视他们

git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all 
+4

我不希望GIT忽略我的文件权限更改。我想让git diff不显示它们... –

+1

是其中一种解决方案吗?我认为我处于相同的情况,似乎这两个答案都忽略与提交相关的权限,而不仅仅是查看已更改的文件。 – okwme

+3

@HommerSmith,这应该适合你的需要:'git -c core.fileMode = false diff' 礼貌:http://stackoverflow.com/a/1580644/749232 – saji89

44

git diff -G.

注:在最后的时间为命令的一部分。

你需要(我认为)至少Git版本1.7.10这个工作。 1.7.2至少太旧了。

+0

1.7.9.5也看起来太老:( – ThorSummoner

+13

“-G。”结尾的时期很重要,以防万一人像我一样密集,并认为这是句子的结尾。一个正则表达式(“。”在这里)添加/删除行 – PseudoNoise

+3

请注意,这实际上是一个很好的破解。默认情况下,git会显示权限更改,并且此命令要求git仅显示影响至少一行的更改在这个文件中,这样做的工作,因为只有权限的更改不会影响任何行。如何处理二进制文件,以及文件在内容和权限两个方面都发生了变化时会发生什么? –