是否有一个选项来限制git差异到一个给定的文件扩展名集?


当前回答

对于简单的文件模式,这似乎是可行的:

$ git ls-files -zm '*.txt' | xargs --null git diff

空格安全,你也可以有多个扩展:

$ git ls-files -zm '*.h|*.c|*.cpp' | xargs --null git diff

其他回答

Git diff只会显示非暂存文件中的差异。

我发现这个问题是因为我想从git diff中排除.info文件,我通过git add *.info来实现这一点,这减少了剩下的文件。

最后我得出了这个结论:

commit=<the_commit_hash_goes_here> && git diff --name-only $commit | grep -i Test | egrep -v '\.sql$' | xargs git diff $commit --

只有当文件名包含单词“test”(不区分大小写)并且不以.sql结尾时,才会显示指定提交的差异,根据您的情况修改管道。

扩展的命令行参数。

git diff *.py

在另一种选择中,你可以将find管道导入git diff:

find . -name '*.py' -type f | git diff --

对于简单的文件模式,这似乎是可行的:

$ git ls-files -zm '*.txt' | xargs --null git diff

空格安全,你也可以有多个扩展:

$ git ls-files -zm '*.h|*.c|*.cpp' | xargs --null git diff

注意参数顺序不同…例如:

git diff master --name-only --relative -- "**/*.ts" "**/*.tsx" "**/*.js" "**/*.jsx" "**/*.vue"

'diff'后面需要跟'master'