我目前正在使用以下内容获取某个提交哈希的提交消息:
hash='b55da97'
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'
不过,这些似乎效率极低。有没有更聪明或更便宜的方法来做到这一点,还是我被 grepping 和 awking 困住了?
git log
需要(除其他外):
-n num
限制显示的提交数量:选择 1(如果num
是 9 或更少,您可以只写,因此,简称)-num
-1
--pretty=format:string with directives
更改日志输出格式。该%s
指令获取提交“主题”,这也是您使用oneline
.因此:git log -n 1 --pretty=format:%s $hash
(or git log -1 --pretty=format:%s
) 将在这里解决问题。
有关格式指令的完整列表,请参阅git log 文档,在“PRETTY FORMATS”下(大约一半)。
根据您实际需要多少提交消息,您可以使用几个漂亮的格式说明符:
· %s: subject
· %f: sanitized subject line, suitable for a filename
· %b: body
· %B: raw body (unwrapped subject and body)
所以类似git log -1 --pretty=format:%b <hash>
, 或使用其他说明符之一(我认为%s
可能更接近你现在正在做的事情)。-1
仅限git log
于一次提交,而不是遍历历史树。
我喜欢将重要的东西放在一行中......这是我使用的,基于此页面上的其他答案:
IT=$(git log -1 --pretty=format:"%an, %s, %b, %ai" $*)
echo "$IT"
jdoe, WORK1766032 - Added templating engine, WIP, 2013-08-15 14:25:59 +0000
比这里列出的更短的答案是
git log --pretty=oneline {your_hash} | grep {your_hash}
这可能会缩短一些
git log --pretty=oneline ${hash} | awk '$0~var {print $2}' var="${hash}"