在做一个时git tag,我并不总是很记得HEAD~6(例如)是包容性的还是排他性的.
鉴于我的大部分提交都以问题编号为前缀,我想知道是否有一些魔术命令用于从其部分消息中搜索提交SHA.
我知道git log从那里开始工作很容易,但我想要更容易:)
编辑:有人也提出了相反的问题:在Git中,有没有办法获得任意提交的"友好"名称?
CB *_*ley 18
您可以使用:/blah语法指定其提交消息以给定文本开头的提交.
例如
git show ":/Issue #299"
Run Code Online (Sandbox Code Playgroud)
这在任何可以使用提交的地方都有效.例如
git cherry-pick ":/Issue #299"
Run Code Online (Sandbox Code Playgroud)
如果您确实需要提交的SHA-1,则可以使用rev-parse.
git rev-parse ":/Issue #299"
Run Code Online (Sandbox Code Playgroud)
请参阅git rev-parse手册页的"SPECIFYING REVISIONS"部分:
冒号,后跟斜杠,后跟文本:
这将命名一个提交,其提交消息以指定的文本开头.
此名称返回可从任何ref访问的最年轻的匹配提交.
如果提交消息以a开头!,则必须重复该操作; 特殊序列:/!,其次!是现在保留的其他内容.
git log --grep=word
Run Code Online (Sandbox Code Playgroud)
应该帮助找到相关的提交.
(而不是搜索提交内容,其中git log -S(pickaxe选项)或git grep更合适)
添加各种格式选项
git log --grep=word --pretty=oneline
git log --grep=word --pretty=format:"%h"
Run Code Online (Sandbox Code Playgroud)
(最后一个只显示SHA1),你很高兴.
另见" 有趣git log --grep "
git log --grep=frotz --grep=nitfol --since=1.month
Run Code Online (Sandbox Code Playgroud)
这将查找上个月内发生的提交,并在其提交日志消息中提及frotz或nitfol.
与通常的"git grep"一样,给出多个模式意味着"这个或那个".
文章指出git grep是面向行的,并在此git log --grep命令中使用--all-match选项.
"
git log"家族使用grep机制的方式正是因为"整个事情是否匹配?" 方面,而不是"向我显示符合这些标准的行"方面.它允许您像这样使用此机制:
git log --all-match --grep=frotz --author=Linus
Run Code Online (Sandbox Code Playgroud)
这将显示提及frotz并由Linus编写的提交.