按文件扩展名显示两个 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 文件输出,但在第二个命令中什么也没有。
- 我不应该使用 grep 吗?
- 我的 grep 命令是否遗漏了什么?
- 或者有更好的方法吗?
*.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"
如何列出两个 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 文件输出,但在第二个命令中什么也没有。
- 我不应该使用 grep 吗?
- 我的 grep 命令是否遗漏了什么?
- 或者有更好的方法吗?
*.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"