【问题标题】:Search git history for a change in a merge commit在 git 历史记录中搜索合并提交中的更改
【发布时间】:2009-10-31 18:08:50
【问题描述】:

要搜索已在 git 历史记录中添加/删除的字符串,我可以这样做

git log -S'some text'

这很好用,只是它不搜索合并提交。如何获取在搜索中包含合并提交的命令?

【问题讨论】:

    标签: git search history


    【解决方案1】:

    似乎 -m 标志给了我想要的结果

    git log -m -S'some text'
    

    我在另一个网站上找到了这个,如果有人能指出我的手册页包含这个标志,那就太好了。这个不包括http://ftp.kernel.org/pub/software/scm/git/docs/git-log.html

    【讨论】:

    • 有关 -m 标志的信息,请参阅下面的答案
    【解决方案2】:

    由于某些 Git 命令是建立在其他(“管道”)命令之上的,因此它们通常会从其他命令继承选项。我同意看不到手册页或--help 输出中记录的内容很烦人。在这种情况下,git-log 帮助指出:

    该命令采用适用的选项 到 git-rev-list 命令来控制 显示的内容、方式和选项 适用于 git-diff-* 命令 控制每次提交的更改方式 介绍了。

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

    ... -m 默认情况下, git-diff-tree --stdin 不显示差异 用于合并提交。使用此标志,它显示了与 所有父母的承诺。另见-c。 ...

    【讨论】:

    • 我在寻找解决此问题的方法时注意到了这些“管道”命令。知道参数被传递给这些较低的命令非常有用。我会知道将来钻取。这似乎是 git 的一个主题,有一个表面层可以用来完成工作,但如果不知道管道层,你很容易被卡住。
    • 小心-m,它很可能不是你想要的。它将合并拆分为几个“虚拟”日志条目,每个父提交一个,因此一个分支独有的文件将显示为另一个分支差异上的全新添加文件。要搜索 in 合并提交中引入的更改,您最可能需要 -c--cc
    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 2021-12-26
    • 2011-11-08
    • 2015-10-19
    • 2011-02-25
    • 2013-03-24
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多