从提交消息git获取提交id

tre*_*rex 2 git github

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

      git log  --author=githubUser | grep "65243" 
Run Code Online (Sandbox Code Playgroud)

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

     merge UI Developers Work #65243
Run Code Online (Sandbox Code Playgroud)

有没有办法通过做到它来获得它的提交ID grep.

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

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

        Bug fixed #65243
Run Code Online (Sandbox Code Playgroud)

tor*_*rek 6

有两种方法可以根据您的需要进行操作.

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

git rev-parse :/65243
Run Code Online (Sandbox Code Playgroud)

和:

git show :/65243
Run Code Online (Sandbox Code Playgroud)

引用上面链接的文档:

冒号后跟一个斜杠,后跟一个文本,命名一个提交,其提交消息与指定的正则表达式匹配.此名称返回可从任何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
Run Code Online (Sandbox Code Playgroud)

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