2012-06-06 33 views
17

我正在写一个小脚本,想知道自创建以来在当前分支上提交了多少个提交。git分支提交的数量

在这个例子中我有2对的提交作出child

git checkout master 
git checkout -b child 
... 
git commit -a 
... 
git commit -a 

所以我想是

commit_number = ... 
echo $commit_number 

谢谢您的帮助。

+0

[git仓库中的提交数量]的可能重复(http://stackoverflow.com/questions/1199312/number-of-commits-in-a-git-repository) –

+2

@ZoltanToth回答你的问题返回自创建存储库以来提交的数量,不是自从创建分支以来。 –

+0

请考虑我的回答(假设更好):https://stackoverflow.com/a/47133753/931908 –

回答

40

Git可以为您提供没有进一步shell脚本的提交数量。

git rev-list master.. --count 

rev-list是用于与修订工作的半隐藏(在git help未列出的)命令。

由于master..会列出从主站和当前分支到当前分支的提交,--count会给你它们的计数。

如果您不想在两个修订版本之间提交承诺数,您可以使用master...。详细说明:从主人到最近的共同祖先主人和当前分支(HEAD)之间,再次到当前分支。如果你将提交历史记录看成一棵树,你应该能够跟随来自共同祖先的两个分支。 master..另一方面只会计数两个分支之一。

因此,无论你想使用master..master...取决于你是否想知道你多少提交您的分支取得因为你把它分解关闭(master..),或当前主机和支路之间的区别,分支自分支以来,分支中的提交数量。

+3

这是一个比接受的答案更好的解决方案,虽然我会在committishes之前提供选项:'git rev- list --count master..' –

+0

更好的答案,因为它也涵盖了非基于nix的平台。 – gnuchu

15

假设你从主分支,master..yourbranch给你的提交范围在yourbranch但不在主。

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

git log master..yourbranch --pretty=oneline | wc -l 
7

更新:git的转速名单现在有--count

git rev-list --count master.. 

年纪较大git版本:

git rev-list master.. |wc -l 

rev-list l ists修订,并且master..提及提交,因为当前HEADmaster不同。

+1

我不得不使用这个与'git rev-list'版本兼容的旧版本,以至于他们没有'--count'开关 –

+0

@ChuckWilbur感谢您的评论,我在答案中加了'--count' – user1338062