26

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

在此示例中,我将在以下位置进行 2 次提交child

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

所以我想要的是

commit_number = ...
echo $commit_number
4

5 回答 5

60

Git 可以为您提供提交次数,而无需进一步编写 shell 脚本。

git rev-list master.. --count

rev-list(列在 中git help -a)用于处理修订。

正如master..将列出从 master 的基础和当前分支到当前分支的提交一样,--count将为您提供它们的计数。

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

因此,您是否想使用master..master...取决于您是否想知道自从您将其拆分后您在分支中进行了多少次提交(),或者当前master..master 和分支之间的差异,master 和分支中的提交数分支被分开了。

于 2013-12-12T11:09:31.257 回答
16

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

然后,您只需将它们分别列出一行,并计算行数:

git log master..yourbranch --pretty=oneline | wc -l
于 2012-06-06T12:18:59.503 回答
8

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

git rev-list --count master..

使用较旧的 git 版本:

git rev-list master.. |wc -l

rev-list 列出修订,并master..自当前HEAD偏离master.

于 2012-06-06T13:07:33.250 回答
1

如果你想查看你或其他人做了多少次提交,从你当前的 开始HEAD,你可以这样做:

git shortlog -sn

示例输出:

   490  Donald Duck
   312  Some Developer
   274  John Doe
   144  Jane Doe
     5  Leet Hacker
于 2019-06-18T05:37:25.613 回答
1

以下命令将计算总分支提交,忽略合并提交。

  • git rev-list --count --no-merges master..

rev-list选项用于处理修订列表。当两个或更多人一起工作并且在提交之前不更新他们的本地副本时,
该选项--count将只返回一个数字而忽略合并。--no-merges

请访问以下链接以查看带有说明的图片。

参考:https ://improveandrepeat.com/2017/10/little-git-tricks-how-many-commits-are-in-a-branch/

于 2021-03-25T09:38:26.767 回答