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

ehi*_*ime 22 git bash awk grep git-log

嘿伙计们,我现在通过使用下面的内容获取某个提交哈希的提交消息

hash='b55da97'
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)

这些看起来效率极低,是否有更聪明更便宜的方法,或者我坚持使用grepping和awking?

tor*_*rek 32

git log 需要(除其他外):

  • -n num限制显示的提交数量:选择1(如果num是9或更少,你可以写,因此,简而言之)-num-1
  • --pretty=format:string with directives更改日志输出格式.该%s指令获取提交"主题",这也是你得到的oneline.

因此:( git log -n 1 --pretty=format:%s $hashgit log -1 --pretty=format:%s)会在这里做到这一点.

有关格式指令的完整列表,请参阅"PRETTY FORMATS"下的git log文档(大约一半).


twa*_*erg 8

根据您实际需要的提交消息的数量,您可以使用几种漂亮的格式说明符:

      ·  %s: subject
      ·  %f: sanitized subject line, suitable for a filename
      ·  %b: body
      ·  %B: raw body (unwrapped subject and body)
Run Code Online (Sandbox Code Playgroud)

所以git log -1 --pretty=format:%b <hash>,或者使用其他一个说明符(我认为%s可能更接近你现在正在做的事情).只有一次提交的-1限制git log,而不是走历史树.


Bra*_*rks 8

我喜欢将重要的内容转储到一行中...这是我使用的内容,它是基于此页面上的其他答案构建的:

git_log_for_commit.sh

IT=$(git log -1 --pretty=format:"%an, %s, %b, %ai"  $*)
echo "$IT"
Run Code Online (Sandbox Code Playgroud)

输出

jdoe, WORK1766032 - Added templating engine, WIP, 2013-08-15 14:25:59 +0000
Run Code Online (Sandbox Code Playgroud)