【问题标题】:Filter `git show <commitId>` result with file extension使用文件扩展名过滤`git show <commitId>`结果
【发布时间】:2017-05-21 06:01:02
【问题描述】:

考虑一个非常大的变更集。在执行git show &lt;sha1&gt; 后,您将获得与所有文件相关的更改。但我只对.cpp 文件所做的更改感兴趣,其余文件对我的分析没有用处。

如何从git show 结果中过滤掉它们?

任何命令或选项。

【问题讨论】:

    标签: git file patch


    【解决方案1】:

    git show -- *.cpp 有效。没有--,glob 似乎无法正常工作。

    【讨论】:

    • 小幅修正:git show -- **/*.cpp。否则,这不会显示对目录中的文件所做的更改。这确实假设您位于项目的根文件夹中。
    【解决方案2】:

    @ElipieKay 在评论部分给出的答案对我有用。

    打印具有 .cpp 扩展名的文件名。

    git show --name-status 29a9f891fd -- *.cpp      
    

    显示对扩展名为 .cpp 的文件所做的更改。

    git show 29a9f891fd -- *.cpp
    

    【讨论】:

      【解决方案3】:

      您可以通过提供要匹配的路径或模式来过滤git show 输出的差异。所以在你的情况下:

      git show "*.cpp"
      

      您需要为您的 shell 使用适当的引号,以确保 Git 可以看到通配符 (*.cpp),并且它不会被您的 shell 先扩展。

      【讨论】:

      • 我做了这样的事情:git show 29a9f891fd0fdba5c16c8a31ee6cb0cd05b865ad '*.cpp' &gt; D://patchforTransmission.cpp。没用!
      • 看起来你可能使用的是windows,根据你的shell,正确的引用形式可能会有所不同。
      • @SauravSahu:我已将答案更改为使用在更多环境中工作的双引号,也许是你的。你使用哪个 shell 来运行你的 Git 命令?
      • @SauravSahu:单引号可以在 bash 中使用,所以还有另一个问题,从您的问题的细节中看不出来。
      • git show -- *.cpp 可以工作。没有--,glob 似乎无法正常工作。
      猜你喜欢
      • 1970-01-01
      • 2012-01-23
      • 2017-12-08
      • 2010-12-31
      • 1970-01-01
      • 2010-10-07
      • 2022-01-06
      • 2020-11-02
      • 1970-01-01
      相关资源
      最近更新 更多