从提交消息git获取提交id

时间:2014-08-11 05:00:09

标签: git github

我在一个月前解决了一个错误,但似乎仍有一些问题。 但我甚至不记得到目前为止我做了哪些改变来解决这个问题。我注意到了这个bug的名字 那时。因此,要查找其提交ID,只有一种方法可以通过git log并搜索commit条消息。 我试过这种方式:

      git log  --author=githubUser | grep "65243" 

但它只是回复了我的信息:

     merge UI Developers Work #65243

有没有办法通过grep来获取其提交ID。

git日志中的消息将采用以下格式:

    commit <commit_id>
    Author: githubUser <githubUser@companyname.com>
    Date:   Thu Jul X 15:55:23 2014 +0530

        Bug fixed #65243

2 个答案:

答案 0 :(得分:5)

根据您的需要,有两种方法可以完成您想要的任务。

第一个也是最短的是使用gitrevisions语法来指定&#34;第一个&#34;在其提交消息中包含给定字符串的修订版:

git rev-parse :/65243

git show :/65243

从上面链接的文档中引用:

  

冒号后跟一个斜杠,后跟一个文本,命名一个提交,其提交消息与指定的正则表达式匹配。此名称返回可从任何ref访问的最年轻的匹配提交。如果提交消息以a开头!你必须重复一遍;特殊序列:/!,后跟除了!之外的东西,现在保留。正则表达式可以匹配提交消息的任何部分。为了匹配以字符串开头的消息,可以使用例如:/ ^ foo中。

这种表达形式命名一个特定的提交(即它与原始SHA-1 ID具有相同的用法),这就是为什么git rev-parse将显示修订版ID而git show将向你展示提交本身。


如果选择了错误的修订版,请使用git log --grep=65243将其输出限制为在其提交消息中包含指定正则表达式的提交。不同之处在于,这仅仅是git log显示的相同修订版(因此您可以添加其他限制器),并显示所有匹配的修订版。也就是说,您可以执行以下操作:

git log --since=... --before=... --author=... --grep=65243 branch~30..branch

查看可从branch但无法从branch~30访问的提交,发生在两个时间戳之间,具有给定作者,并包含65243。 (如果需要,可以将--oneline--format=pretty:...字符串添加到git log命令中。)

答案 1 :(得分:3)

运行git log以按日期范围获取所需的所有提交ID,因此如果您知道更改的月份,则可以缩小搜索范围:)

git log --before={2014-02-01} --after={2014-01-01} --author="your name"

即。在上面的例子中,我抓住了2014年1月所做的所有更改