git中分支上的提交数

And*_*kov 21 git version-control

我正在写一个小脚本,想知道自创建以来我在当前分支上做了多少次提交.

在这个例子中,我有2个提交child:

git checkout master
git checkout -b child
...
git commit -a
...
git commit -a
Run Code Online (Sandbox Code Playgroud)

所以我想要的是

commit_number = ...
echo $commit_number
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

Kis*_*aki 50

Git可以在没有进一步shell脚本的情况下为您提供提交数量.

git rev-list master.. --count
Run Code Online (Sandbox Code Playgroud)

rev-list(列于git help -a)用于处理修订.

作为master..将列出主的基础和当前分支到当前分支的提交,--count会给你他们的计数.

如果您希望获得两个修订版之间的提交数量,则可以使用master....详细说明:从master到master的最新共同祖先和当前分支(HEAD)之间,再到当前分支.如果将提交历史可视化为树,则应该能够遵循共同祖先的两个分支.master..另一方面,只计算两个分支中的一个.

因此,无论你想使用master..master...依赖于你是否想知道有多少的提交你做你的分支,因为你把它分解关闭(master..),或之间的差别目前主站和分公司,大师提交的数目因为分支分支被拆分了.

  • 这是一个比接受的答案更好的解决方案,尽管我会在委托之前提出选项:`git rev-list --count master..` (3认同)

Cha*_*esB 16

假设您从master分支,master..yourbranch为您提供yourbranch但不在master中的提交范围.

然后你只需要每行列出一行,并计算行数:

git log master..yourbranch --pretty=oneline | wc -l
Run Code Online (Sandbox Code Playgroud)


use*_*062 8

更新:git rev-list现在有--count:

git rev-list --count master..
Run Code Online (Sandbox Code Playgroud)

使用较旧的git版本:

git rev-list master.. |wc -l
Run Code Online (Sandbox Code Playgroud)

rev-list列出了修订版,并master..引用了自当前HEAD分歧以来的提交master.