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


当前回答

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

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT

其他回答

使用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>: a sha, HEAD, branch-name, tag-name, branch1…branch2等等。 | tail +2:第一行是提交sha,跳过它

它比git log或git show快得多。

它不是“管道”,但它会做你想要的:

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

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

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

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

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

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT

我用shortlog来表示:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 

Git show更像是一个管道命令,而不是Git日志,并且有相同的格式化选项:

git show -s --format=%B SHA1