通过提交消息查找修订

Finding a revision by commit message

我知道这种事情被问了很多(例如here),但是(可能是因为这个)我没能找到我要找的东西。

我知道我可以通过与其提交消息匹配的模式指定提交,而不是通过其散列,如下所示:

git show ":/rename function X to function Y"

这向我展示了消息以给定模式开头的最新提交,而无需我先搜索其哈希。

我的问题是:

  1. 此功能的名称是什么,记录在何处? (在 Google 中搜索 :/ 是徒劳的)

  2. 如何获取该提交的 parent?这不起作用:

    git show ":/pattern"^
    

有点难看,可能有更好的方法,但你可以使用类似下面的方法来找到父级:

git show $(git rev-parse ":/pattern")^

git rev-parse 给出指定修订版的 SHA1,您可以对其应用 ^ 等运算符。或者,您可以使用 git name-rev --name-only,这将为修订提供一个符号名称(例如 master~10)。

:/ 语法似乎没有专门的名称,在 gitrevisions(7) 手册页中有记录。