我需要一个管道命令来打印给定提交的提交消息 - 没有更多,没有更少。
这不是"管道", 但它会完全符合您的要求:
$ git log --format=%B -n 1 <commit>
如果你绝对需要一个 "plumbing" 命令(不确定为什么这是必要的),你可以使用 rev-list
:
$ git rev-list --format=%B --max-count=1 <commit>
尽管rev-list
会在第一行打印提交的SHA和提交信息,但是它仍然可以起到作用。
%s%b
而不是%B
(在一个Linux机器上)。 - adamk%B
是一个正确的占位符(至少在 Git 1.7.2 版本中是这样,不确定具体添加时间)。 - mipadi%B
在 1.7.1 之后的某个时间添加(可能是在 1.7.1.1 中添加的)。 - mipadigit log
看起来比较慢。 - CervEdgit show
比git log
更像是一个管道命令,并且具有相同的格式选项:
git show -s --format=%B SHA1
%s
代替 %B
。 - ntc2rev-list
有一个max-count
选项而show
没有,所以rev-list
正在遍历整个树或执行某些计算密集型的操作。但是你不能基于公共API对内部工作机制做出这样的假设。git show
是一个瓷器命令,我假设它使用了与rev-list
完全相同的机制,以及许多其他用户友好的操作,从而使其变慢。瓷器命令不是为了速度而进行优化的。 - CervEd不是管道问题,但这些是我在.gitconfig中有的:
lsum = log -n 1 --pretty=format:'%s'
lmsg = log -n 1 --pretty=format:'%s%n%n%b'
那是“最后一次摘要”和“最后一条消息”。您可以提交一个提交以获取该提交的摘要或消息。(我正在使用1.7.0.5,因此没有%B。)
使用此方法可以获得指定时间内所有消息的紧凑列表。
git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT
我开始使用
git show-branch --no-name <hash>
它似乎比原来更快
git show -s --format=%s <hash>
两者都会得到相同的结果
我实际上编写了一个小工具来查看我所有仓库的状态。您可以在Github上找到它。
git-rev-list
是一个管道命令,它可以让你打印出一个提交的信息。
这样使用它。
git rev-list --max-count=1 --no-commit-header --format=%B <commit>
--max-count=1
:我们只关心一个提交--no-commit-header
:不显示默认的提交头--format=%B
:显示消息(主题%s
+%n%n
+正文%b
)<commit>
:一个sha
、HEAD
、branch-name
、tag-name
、branch1...branch2
等。它比git log
或git show
快得多。
tail +3
。 - Leponzo--no-commit-header
选项到rev-list中。如果需要使用sed,可以使用sed '/^commit [0-9a-f]\{40\}$/d'
(https://dev59.com/floU5IYBdhLWcg3w7qIt#68514358)。 - T.D$ git shortlog master..
Username (3):
Write something
Add something
Bump to 1.3.8
git show -s --oneline <commit>
。 - waldyrious