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



我目前正在使用以下方法获取某个提交哈希的提交消息:

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可能更接近您现在正在做的事情)。-1git 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}"

相关内容

  • 没有找到相关文章

最新更新