【问题标题】:Git > diffs filtered, show only certain changed classes/filesGit > diffs 过滤,仅显示某些更改的类/文件
【发布时间】:2015-08-20 08:24:45
【问题描述】:

我有 2 个版本的软件(即标签 4.1 和标签 4.2)。

现在我想过滤掉 4.1 版的哪些 java 类有固定的错误。

如果我输入git diff r4.1 r4.2 --name-only > patch.csv,我会得到一个从 4.1 到 4.2 的所有更改类的列表。但此列表还包含并非基于错误的更改。

是否有可能我可以过滤结果以仅显示由于包含“错误”一词的提交而更改的类。例如“git log --grep=bug”。我可以将它与“diff”命令结合使用吗?

如果这是不可能的,那么当我只查看 4.2 版并获取因修复错误而导致的更改类列表时,我也可以。

类似git r4.2 log --grep=bug --name-only?

【问题讨论】:

    标签: git filter grep diff git-log


    【解决方案1】:

    git log r4.1..r4.2 --name-only --grep=bug --pretty=oneline 应该为您提供提交消息标头的列表以及其中更改的文件,而无需提交消息本身。然后,您可以重定向输出以获得易于阅读的类列表:

    $ git log r4.1..r4.2 --name-only --grep=bug --pretty=oneline | grep "\.java$" | sort | uniq
    

    【讨论】:

    • 非常感谢!为什么你建议只使用标题而不是整个提交消息来搜索单词 bug?我可以定义只查找错误而不是调试吗?现在还显示了带有调试的提交。
    • 这样做的目的如下:我已经用一个工具分析了 4.1,因此每个 java 类都有一个错误概率。现在我想检查它的工作情况,因此寻找真正的错误。没有错误跟踪器确实提供到类级别的信息。所以我开始了这个实验;)将范围从 4.1 扩展到 4.20 以获得更多提交是否是个好主意,或者 ie 4.6 中的错误提交描述了一个不在分析版本中的错误的危险是否很高4.1.
    • 你帖子中java后面的$是什么意思? :)
    • $grep 语法中的行尾字符。换句话说,grep 表达式查找以.java 结尾的行。
    • 好的,谢谢!是否有可能将结果限制为与“错误”一词完全匹配。现在还显示了带有“调试”的提交......即类似这样的内容:--grep='bug' 而不是--grep=*bug*
    猜你喜欢
    • 2013-04-02
    • 2011-08-08
    • 2014-04-27
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2010-10-30
    • 2013-01-11
    • 2021-12-03
    相关资源
    最近更新 更多