考虑一个非常大的变更集。执行
git show <sha1>
后,您将获得与所有文件相关的更改。但我只对 .cpp
文件所做的更改感兴趣,其余文件对我的分析没有用处。
如何从
git show
结果中过滤掉它们?
任何命令或选项。
git show -- *.cpp
有效。如果没有 --
,glob 似乎无法正常工作。
您可以通过提供要匹配的路径或模式来过滤
git show
输出的差异。所以在你的情况下:
git show "*.cpp"
您需要对您的 shell 使用适当的引号,以确保 Git 可以看到通配符 (
*.cpp
) 并且它不会首先被您的 shell 扩展。
@ElipieKay 在评论部分给出的答案对我有用。
打印具有 .cpp 扩展名的文件名。
git show --name-status 29a9f891fd -- *.cpp
显示对扩展名为 .cpp 的文件所做的更改。
git show 29a9f891fd -- *.cpp
显然 Git 已经发展,并允许更简单和直观的语法,例如:
git show b5v712n *.java
这仅显示任何子目录中 Java 文件的所有更改。在 Windows 上使用版本 2.45.2 进行了测试。