CB *_*ley 197
是的,如果你确保git扩展了一个glob而不是你的shell,那么它将匹配任何级别,所以像这样的东西(引号很重要)应该可以正常工作.
git diff -- '*.c' '*.h'
Run Code Online (Sandbox Code Playgroud)
无论是使用shell的globstar(这确实递归搜索)1 ,2 :
shopt -s globstar
git diff -- *.py **/*.py
Run Code Online (Sandbox Code Playgroud)
或使用find:
find -name '*.py' -print0 | xargs -0 git diff --
Run Code Online (Sandbox Code Playgroud)
这两个都是特殊名称和空白证明.虽然您可能希望过滤扩展名为.py的目录:)
1我喜欢git diff -- {.,**}/*.py通常做
2启用globstar时,git diff -- **/*.py已包含./*.py.在Bash的联机帮助页中:'如果后跟一个/,则两个相邻的*将仅匹配目录和子目录.
要递归地包括文件(包括当前目录),这对我有用:
git diff -- '***.py'
Run Code Online (Sandbox Code Playgroud)
小智 6
在 git 版本 2.18.0 上测试,文件扩展名应该用双引号引起来。如果您想在拉取后找到本地存储库和远程存储库之间的最后差异,您可以使用:
git diff YourBranchName@{1} YourBranchName --name-only "*.YourFileExtionsion"
Run Code Online (Sandbox Code Playgroud)
例如:
git diff master@{1} origin/master --name-only "*.cs"
Run Code Online (Sandbox Code Playgroud)