按文件扩展名显示两个 Git 分支之间的差异

Show differences between two Git branches by file extension

如何列出两个 git 分支之间的差异,但只显示具有特定文件扩展名的那些文件?

我发现以下内容为我提供了两个分支之间的所有不同文件:-

git diff -r --name-only --no-commit-id branch1 branch2

但后来我尝试将其通过管道传输到 grep 中并仅搜索 'yml' 个文件....但我什么也没得到。

(git diff -r --name-only --no-commit-id branch1 branch2) | grep "*.yml"

我可以在第一个命令中看到 yml 文件输出,但在第二个命令中什么也没有。

*.yml 不是有效的正则表达式。

* 表示 "the preceding character, zero or more times",因此作为正则表达式的前导字符没有意义。如果要查找所有以 .yml 结尾的文件,只需 ... | grep '\.yml$'。我们正在转义 . 因为 . 意味着 "any character",而 $ 意味着 "end of the line"(所以这将明确 而不是 匹配名为 foo.yml.j2).

的文件

您可以为 git 差异附加一个类似于 shell 的模式。

git diff -r --name-only --no-commit-id branch1 branch2 "*.yml"

正如@larsks 所说,grep 接受正则表达式,这与 shell 通配符不同。

grep接受正则表达式,其中*.的含义完全不同。

是的,您不必使用 grep:

git diff -r --name-only --no-commit-id branch1 branch2 -- "*.yml"