如何列出单个Git提交中的所有文件,并在diff中进行特定的文本更改?

时间:2017-06-02 12:38:19

标签: git

我在another answer中发现我可以列出提交中更改的文件:

git diff-tree --no-commit-id --name-only -r bd61ad98

如何才能在diff?

中仅显示包含特定文本更改的文件

1 个答案:

答案 0 :(得分:3)

您可以使用-G flag

  

-S<regex> --pickaxe-regex

     

查找补丁文本中包含匹配的添加/删除行的差异。

     

为了说明-G<regex>+ return !regexec(regexp, two->ptr, 1, &regmatch, 0); ... - hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0); 之间的区别,请考虑在同一文件中使用以下差异进行提交:

git log -G"regexec\(regexp"
     

虽然git log -S"regexec\(regexp" --pickaxe-regex将显示此提交,但git diff-tree --no-commit-id -G<regex with what you are looking at> --name-only -r bd61ad98 不会显示(因为该字符串的出现次数没有变化)。

     

有关详细信息,请参阅gitdiffcore[7]中的pickaxe条目。

例如:

%matplotlib notebook