是否有可能在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