我目前正在使用以下方法获取某个提交哈希的提交消息:
hash='b55da97'
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'
不过,这些似乎效率极低。有没有更聪明或更便宜的方法可以做到这一点,或者我是否被困在嘎嘎嘎嘎�
git log
需要(除其他外):
-
-n num
限制显示的提交次数:选择 1(如果num
是 9 或更少,您可以只写-num
,因此,简称-1
) -
--pretty=format:string with directives
更改日志输出格式。%s
指令获取提交 "subject",这也是您通过oneline
获得的内容。
因此:git log -n 1 --pretty=format:%s $hash
(或git log -1 --pretty=format:%s
)将在这里解决问题。
有关格式指令的完整列表,请参阅"漂亮格式"下的 git 日志文档(大约一半)。
根据您实际想要的提交消息的数量,您可以使用几个漂亮的格式说明符:
· %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
限制为仅一次提交,而不是遍历历史树。
我喜欢将重要的东西转储到一行中......这是我使用的,在此页面上的其他答案的基础上构建:
git_log_for_commit.sh
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}"
试试这个:
git show --pretty=format:"%s" -s "${hash}"