2014-03-13 89 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僅顯示影響至少一行的更改在這個文件中,這樣做的工作,因爲只有權限的更改不會影響任何行。如何處理二進制文件,以及文件在內容和權限兩個方面都發生了變化時會發生什麼? –