Answers:
是的,如果您确保git扩展了一个glob而不是您的shell,那么它将在任何级别都匹配,因此类似这样的内容(引号很重要)应该可以正常工作。
git diff -- '*.c' '*.h'
git diff -- *.{c,h,etc}
git diff master HEAD -- "*filename.txt"
git diff master HEAD --name-only
''
)也很重要!git diff -- src/*.js
应该是git diff -- 'src/*.js'
要递归地包括文件(包括当前目录),这对我有用:
git diff -- '***.py'
git diff -- '***.py' ':!.Trashes'
扩展的命令行参数。
git diff *.py
或者,您可以通过管道find
输入git diff
:
find . -name '*.py' -type f | git diff --
git diff *.py
,没有标题就可以了
如在git版本2.18.0上测试的,文件扩展名应该用双引号引起来。如果要查找本地存储库和远程存储库之间的最后区别,请在提取后使用:
git diff YourBranchName@{1} YourBranchName --name-only "*.YourFileExtionsion"
例如:
git diff master@{1} origin/master --name-only "*.cs"
git diff master@{1} origin/master --name-only -- "*.cs"
在以下情况下,以上答案似乎都不适合我 git bash
在Windows上,。我不确定这是版本(我正在使用1.8.4)还是Windows / bash版本。同样,在我的情况下,我想比较两个分支,其中每个分支都具有另一个分支中不存在的其他文件(因此,基于“查找”的文件被取消了)。
无论如何,这对我有用(在我的示例中,查找python文件之间的差异):
git diff branch1 branch2 -- `git diff --summary branch1 branch2 | egrep '\.py$' | cut -d ' ' -f 5`
我结束了这个:
commit=<the_commit_hash_goes_here> && git diff --name-only $commit | grep -i Test | egrep -v '\.sql$' | xargs git diff $commit --
仅当文件名包含单词“ test”(不区分大小写)并且不以结束时.sql
,此命令才会显示指定提交的差异,请根据情况修改管道。