代码之家  ›  专栏  ›  技术社区  ›  Benjol

有没有办法从消息中获取提交的SHA?

git
  •  12
  • Benjol  · 技术社区  · 14 年前

    当做一个 git tag

    考虑到我的大多数提交都有一个问题编号作为前缀,我想知道是否有一些神奇的命令用于从提交消息的一部分搜索提交SHA。

    我知道做一件事很容易 git log 在那里工作,但我想要更简单的:)

    编辑 :也有人问了相反的问题: In Git, is there a way to get the “friendly” name for an arbitrary commit?

    3 回复  |  直到 7 年前
        1
  •  18
  •   VonC    14 年前

    你可以用 :/blah

    例如。

    git show ":/Issue #299"
    

    git cherry-pick ":/Issue #299"
    

    如果您确实需要提交的SHA-1,您可以使用rev parse。

    git rev-parse ":/Issue #299"
    

    看到了吗 "SPECIFYING REVISIONS" section of the git rev-parse man page :

    :
    这将命名其提交消息以指定文本开头的提交。
    此名称返回可从任何引用访问的最年轻的匹配提交。
    如果提交消息以 ! ,你必须重复一遍;特殊序列 :/! ,后面跟的不是 暂时保留。

        2
  •  8
  •   Community holdenweb    7 年前
    git log --grep=word
    

    应该有助于找到相关的提交。
    (相对于搜索 commit contents log -S git grep (更合适)

    添加各种格式选项,如

    git log --grep=word --pretty=oneline
    git log --grep=word --pretty=format:"%h"
    

    (最后一个只显示SHA1),你就可以走了。


    Fun with git log --grep "

    git log --grep=frotz --grep=nitfol --since=1.month
    

    这将查找上个月内发生的提交,并在提交日志消息中提到frotz或nitfol。

    文章指出 吉特·格雷普 git日志--grep 命令。

    “道路” git log

    git log --all-match --grep=frotz --author=Linus
    

        3
  •  1
  •   David Z    14 年前

    git rev-list --grep='message excerpt' HEAD
    

    这将只列出作为的祖先的提交 HEAD . 如果要搜索存储库中的所有提交(包括那些不是 ),除了手动检查所有分支头并运行此命令之外,我不知道如何执行此操作(可能有办法,我只是不知道可能是什么)