嘿伙计们,我目前正在使用下面的
获取某个提交哈希的提交消息hash='b55da97'
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'
这些效率似乎非常低效,是否有更智能更便宜的方法来实现这一目标,还是我坚持使用grepping和awking?
答案 0 :(得分:25)
git log
需要(除其他外):
-n num
限制显示的提交次数:选择1(如果 num
为9或更少,则可以只写-num
,因此,{ {1}},简称)-1
更改日志输出格式。 --pretty=format:string with directives
指令获取提交“主题”,这也是%s
提供的内容。因此:oneline
(或git log -n 1 --pretty=format:%s $hash
)会在这里做到这一点。
有关格式指令的完整列表,请参阅“{PRETTY FORMATS”下的git log documentation(大约一半)。
答案 1 :(得分:6)
根据您实际需要的提交消息的数量,您可以使用几种漂亮的格式说明符:
· %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
限制为仅提交一次,而不是走历史树。
答案 2 :(得分:4)
我喜欢把重要的东西放到一行......这就是我用的东西,在这个页面上建立了其他答案:
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
答案 3 :(得分:1)
这可能会缩短一些
git log --pretty=oneline ${hash} | awk '$0~var {print $2}' var="${hash}"
答案 4 :(得分:0)
一个比这里列出的答案还要短的答案
git log --pretty=oneline {your_hash} | grep {your_hash}