319

我需要一个管道命令来打印一个给定提交的提交消息 - 不多也不少。

4

8 回答 8

406

它不是“管道”,但它会完全按照您的意愿行事:

$ git log --format=%B -n 1 <commit>

如果你绝对需要一个“管道”命令(不知道为什么这是一个要求),你可以使用rev-list

$ git rev-list --format=%B --max-count=1 <commit>

尽管rev-list除了提交消息之外还会打印出提交 sha(在第一行)。

于 2010-07-28T20:47:09.640 回答
165

git show更像是一个管道命令git log,并且具有相同的格式选项:

git show -s --format=%B SHA1
于 2013-08-01T13:45:30.500 回答
23

没有管道,但我的 .gitconfig 中有这些:

lsum = log -n 1 --pretty=format:'%s'
lmsg = log -n 1 --pretty=format:'%s%n%n%b'

那是“最后的总结”和“最后的消息”。您可以提供提交以获取该提交的摘要或消息。(我使用的是 1.7.0.5,所以没有 %B。)

于 2010-07-28T22:14:07.393 回答
17

这将为您提供任何指定时间的所有消息的非常紧凑的列表。

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT
于 2011-11-28T11:35:03.793 回答
16

我开始使用

git show-branch --no-name <hash>

它似乎比

git show -s --format=%s <hash>

两者都给出相同的结果

我实际上写了一个小工具来查看我所有回购的状态。你可以在github上找到它。

在此处输入图像描述

于 2019-02-26T12:58:30.557 回答
4

使用 git-rev-list 打印提交信息

git-rev-list是让您打印提交消息的管道命令。

像这样使用它。

git rev-list --format=%B --max-count=1 <commit> | tail +2
  • --format=%B: 显示消息(主题%s+ %n%n+ 正文%b
  • --max-count=1: 我们只对一个提交感兴趣
  • <commit>: sha, HEAD, branch-name,等tag-name_branch1...branch2
  • | tail +2: 第一行是提交 sha,跳过它

它比git logor快很多git show

于 2021-05-04T14:01:21.093 回答
3

我为此使用短日志:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
于 2018-11-28T15:53:30.867 回答
1

在 git 中单独获取我的最后提交消息

git log --format=%B -n 1 $(git log -1 --pretty=format:"%h") | cat -

于 2021-03-02T04:48:41.780 回答