我不經意地更改了整個樹的權限,並單獨提交了其他內容更改。我可以讓git diff忽略權限更改
我使用類似:
tar -czf deploy.tar git diff --name-only v1 v2
產生兩個標記之間的修改過的文件焦油,問題是,現在因爲權限的改變,幾乎所有我的樹被列爲修改。
有沒有一種方法可以告訴git diff
忽略那些只有權限改變的文件?
我不經意地更改了整個樹的權限,並單獨提交了其他內容更改。我可以讓git diff忽略權限更改
我使用類似:
tar -czf deploy.tar git diff --name-only v1 v2
產生兩個標記之間的修改過的文件焦油,問題是,現在因爲權限的改變,幾乎所有我的樹被列爲修改。
有沒有一種方法可以告訴git diff
忽略那些只有權限改變的文件?
這將讓Git忽略權限:
git config core.filemode false
也許這可能會阻止添加具有更改權限的文件到提交,但在我的情況下,這些文件是提交,推送和標記的,並且您提出的命令不能幫助我。我想我必須製作一些bash腳本來解析git diff的輸出以刪除關於模式更改的行,並將結果提供給tar。任何想法都更受歡迎 – Cesar 2010-07-20 15:06:38
@Cesar:該命令告訴git忽略索引和工作副本之間的權限差異。這不是你想要的嗎? – 2010-07-20 16:10:23
我是新來的混帳,但事情是差異之間的提交。當我做git diff tag1 tag2時,它會顯示我修改內容的所有文件,除了修改內容的文件外,我只想找到一種方法來忽略所有'模式改變664 => 775',我希望我製作我自己清除 – Cesar 2010-07-20 22:14:23
我特意後去除源代碼文件(〜26K的文件)執行權限有這個問題。然後,git diff說所有的文件都改變了! core.filemode的答案對我沒有幫助,因爲它只會影響你的工作目錄的差異,而不會與repo中的2次提交差異。
答案是使用(big scary)filter-branch命令。特別是,您需要鍵入的全部內容爲:
git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all
從您的工作目錄的根目錄。當然,如果您需要重新嘗試,請務必首先製作您的回購副本(cp -pr〜/ repo.git〜/ repo-orig.git或類似)。
享受!
有趣(+1)。我已經在http://stackoverflow.com/a/12979453/6309中將它包含在我的答案中(因爲您自己的答案已被刪除) – VonC 2013-05-03 05:51:29
可能重複[如何使git忽略模式更改(chmod)?](http://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-mode-changes-chmod ) – Leonel 2012-07-04 11:35:54