是否有可能在git diff期間忽略某些文件?我特別感興趣的是過濾掉Makefile.in,Makefile,configure(以及所有自動生成的廢話)。Git diff忽略
回答
您可以嘗試將文件列表傳遞到git diff
,並且它只會在這些文件上執行diff。
根據你的代碼是如何設置,它可以是那麼容易,因爲:
git diff otherbranchname -- src/ # only give me diffs from src/
或難看/複雜的:
git diff otherbranchname -- $(git ls-files |
perl -lne'next if /(?:[mM]akefile(?:\.in)?|configure|whateverelse)/;print')
# diff all files which don't match the pattern
根據要忽略文件是否由Git在當前分支管理或不管理,您需要將git ls-files
替換爲find *
;使用find .
,並將|.git
添加到Perl表達式中。
裁縫這個你認爲合適的,可能使用的目錄/文件名,你知道你想diff的,而不是使用git ls-files
或find
。
哦,這只是純粹的真棒:-D謝謝 – 2010-08-13 07:13:56
未經追蹤的文件將不會顯示在差異,雖然 - 我會認爲'ls文件'將永遠是很多,除非由於某些原因,你*想*差異對於一些未跟蹤的文件。 – Cascabel 2010-08-13 11:39:15
關於gitignore和自動工具的集成,您可能會感興趣的git.mk:http://mail.gnome.org/archives/desktop-devel-list/2009-April/msg00211.html
另一個類似的解決方案(添加到.git/config
):
git mydiff
:
[alias]
mydiff = !git diff -- $(git diff --name-only | grep -Ev "([mM]akefile|configure)")
然後運行它
請注意git diff --name-only
比git ls-files
好,因爲它會傳遞一個較短的文件列表t git diff
,因爲只有被修改的文件纔會被包含。使用git ls-files
時,我遇到了超出大型項目中參數最大數量的麻煩。
至於詳細here你可以使用一個exclude
pathspec魔法
git diff -- . ':(exclude)Makefile*' ':(exclude)configure'
- 1. git diff:忽略變量的重命名
- 2. git diff忽略文件中的模式
- 3. hg diff忽略^ M
- 4. GIT diff和GIT狀態忽略文件的更改
- 5. diff忽略空白喜歡
- 6. SVN diff命令 - 忽略BOM
- 7. Git忽略gitconfig?
- 8. Xcode .git忽略
- 9. 顯示git diff,忽略文件權限更改?
- 10. git diff - 忽略修訂版本之間的所有換行
- 11. git diff:如何忽略管道輸入的filemode?
- 12. 忽略Visual Studio代碼中的空白代碼git diff查看
- 13. Git diff不會忽略.gitignore中的指定文件
- 14. 自定義git diff來忽略一些衝突
- 15. 忽略git-diff中的任何空白或換行符
- 16. git diff忽略目錄下的所有內容(node_modules)
- 17. 我可以讓git diff忽略權限更改
- 18. git push忽略cocoapods
- 19. Git忽略只推
- 20. 忽略Git提交
- 21. 忽略git合併
- 22. Unity Git - 忽略庫
- 23. 忽略在Git中
- 24. 忽略使用Git
- 25. 忽略git目錄
- 26. 水銀DIFF:忽略尾隨空白?
- 27. 忽略Liquibase中的項目diff
- 28. 化妝DIFF忽略符號鏈接
- 29. 在.diff()中忽略NaN()與熊貓
- 30. NAnt + svn diff - 忽略合併提交
你可以將其全部添加到您的'.gitignore'文件;如果它們是自動生成的,將它們存儲在源代碼管理系統中有意義嗎? – sarnold 2010-08-13 05:57:15
我沒有把它們存儲在那裏,這就是整個問題。如果我願意,我會把他們拿出來,輕鬆一點。 這是上游問題。但是我需要區分兩個不同的上游分支,我得到的只是這個自動生成的垃圾。幾乎不可能做任何真正的比較工作。 – 2010-08-13 05:59:56