通过短哈希获取GIT提交消息的更好方法是什么?

时间:2013-11-05 20:33:03

标签: git bash awk grep git-log

嘿伙计们,我目前正在使用下面的

获取某个提交哈希的提交消息
hash='b55da97'
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'

这些效率似乎非常低效,是否有更智能更便宜的方法来实现这一目标,还是我坚持使用grepping和awking?

5 个答案:

答案 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可能更接近你现在正在做的事情)。 -1git log限制为仅提交一次,而不是走历史树。

答案 2 :(得分:4)

我喜欢把重要的东西放到一行......这就是我用的东西,在这个页面上建立了其他答案:

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

答案 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}