我已经找到了这个答案:在git的分支上提交的数量 但这假设分支是从master创建的。
我如何在不依赖于这个假设的情况下计算沿着分支提交的数量呢?
在SVN中,这是微不足道的,但由于某种原因,在git中很难解决。
我已经找到了这个答案:在git的分支上提交的数量 但这假设分支是从master创建的。
我如何在不依赖于这个假设的情况下计算沿着分支提交的数量呢?
在SVN中,这是微不足道的,但由于某种原因,在git中很难解决。
当前回答
计算你所在分支的提交次数:
git rev-list --count HEAD
对于分支
git rev-list --count <branch-name>
如果您想统计自创建分支以来在分支上所做的提交次数
git rev-list --count HEAD ^<branch-name>
这也将计算所有不在分支名称上的提交。
例子
git checkout master
git checkout -b test
<We do 3 commits>
git rev-list --count HEAD ^master
结果:3
如果你的分支来自于一个叫做develop的分支:
git checkout develop
git checkout -b test
<We do 3 commits>
git rev-list --count HEAD ^develop
结果:3
忽略合并
如果你在没有快进的情况下将另一个分支合并到当前分支中,并且执行上述操作,合并也会被计算在内。这是因为对于git来说,merge就是提交。
如果你不想计算这些提交,添加——no-merge:
git rev-list --no-merges --count HEAD ^develop
其他回答
我喜欢用gitshortlog -s -n,所有的。为您提供一个“排行榜”风格的名称和提交数量列表。
因为OP引用了git中分支上的提交数量,我想补充的是,这里给出的答案也适用于任何其他分支,至少从git 2.17.1版本开始(似乎比Peter van der Does的答案更可靠):
正常工作:
git checkout current-development-branch
git rev-list --no-merges --count master..
62
git checkout -b testbranch_2
git rev-list --no-merges --count current-development-branch..
0
最后一个命令像预期的那样给出零提交,因为我刚刚创建了分支。前面的命令给出了开发分支上的实际提交数减去合并提交数
工作不正常:
git checkout current-development-branch
git rev-list --no-merges --count HEAD
361
git checkout -b testbranch_1
git rev-list --no-merges --count HEAD
361
在这两种情况下,我都得到了开发分支和master中所有提交的数量。
你也可以 Git log | grep commit | wc -l
然后得到结果
它可能需要一个相对较新的Git版本,但这对我来说很好:
git rev-list --count develop..HEAD
这为我提供了当前分支中以master为基础的提交的确切计数。
Peter回答中的命令,git rev-list——count HEAD ^develop包含了更多的提交,在我当前的项目中是678 vs 97。
在这个分支上,我的提交历史是线性的,所以是YMMV,但它给了我想要的确切答案,即“到目前为止,我在这个特性分支上添加了多少次提交?”
从历史开始到当前分支的提交量,不包括来自合并分支的提交量:
git rev-list HEAD --count --first-parent
从文档git rev-list——help:
——“首席家长 在看到合并提交时,只遵循第一个父提交。在查看特定主题分支的演变时,此选项可以提供更好的概述,因为合并到主题分支往往只是为了不时地调整到更新的上游,并且此选项允许您忽略通过这种合并引入历史记录的单个提交。不能与——bisect组合。
注意:浅克隆会缩小历史大小。例如,如果你用深度1克隆,将返回1。
自其他提交以来已完成的提交数:
git rev-list HEAD abc0923f --count --first-parent
或相同:
git rev-list abc0923f.. --count --first-parent
或者使用其他git引用:
git rev-list master tag-v20 --count --first-parent
统计自2018年以来已完成的任务
git rev-list HEAD --count --first-parent --since=2018-01-01
01-01-2018, 01.01.2018, 2018.01.01也适用。
git rev-label
我写了一个脚本,从Git中获得版本修订,格式为'$refname-c$count-g$short$_dirty',扩展为master-c137-gabd32ef。 帮助包含在脚本本身中。