在git历史记录中搜索合并提交中的更改

20

要搜索 Git 历史记录中已添加/删除的字符串,我可以执行以下操作:

git log -S'some text'

这个方法很好,但它不能搜索合并提交。如何让命令在搜索时包括合并提交?

2个回答

20

关于 -m 标志的信息请参见下面的答案。 - opsb

7

由于一些Git命令是基于其他(“plumbing”)命令构建的,因此它们经常继承其他命令的选项。我同意在手册页或--help输出中没有看到这些选项很烦人。在这种情况下,git-log帮助文档如下:

该命令采用适用于git-rev-list命令的选项来控制显示内容和方式,并采用适用于git-diff-*命令的选项来控制每个提交引入的更改的显示方式。

在这种情况下,您可以在git-diff-tree中找到-m选项:

...
-m
    默认情况下,git-diff-tree --stdin不会显示合并提交的差异。使用此标志,它将显示该提交与其所有父项之间的差异。 也请参阅-c。
...

我在寻找解决方案时注意到了这些“管道”命令,知道参数会传递给这些底层命令非常有用。以后我会知道要深入研究。这似乎是 Git 的主题,它有一个表面层,可以用来完成任务,但如果不了解管道层,则很容易卡住。 - opsb
小心使用 -m,很可能不是你想要的。它将合并拆分为多个“虚拟”日志条目,每个父提交一个,因此分支专有的文件将出现在另一个分支差异中作为全新添加的文件。如果要搜索合并提交引入的更改,则最好使用 -c--cc - MestreLion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接