我已经找到了这个答案:在git的分支上提交的数量 但这假设分支是从master创建的。

我如何在不依赖于这个假设的情况下计算沿着分支提交的数量呢?

在SVN中,这是微不足道的,但由于某种原因,在git中很难解决。


当前回答

一种方法是列出分支的日志并计算行数。

git log <branch_name> --oneline | wc -l

其他回答

我喜欢用gitshortlog -s -n,所有的。为您提供一个“排行榜”风格的名称和提交数量列表。

git log——pretty=oneline | wc -l怎么样

这将从当前分支的角度计算所有提交。

从历史开始到当前分支的提交量,不包括来自合并分支的提交量:

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。 帮助包含在脚本本身中。

一种方法是列出分支的日志并计算行数。

git log <branch_name> --oneline | wc -l

它可能需要一个相对较新的Git版本,但这对我来说很好:

git rev-list --count develop..HEAD

这为我提供了当前分支中以master为基础的提交的确切计数。

Peter回答中的命令,git rev-list——count HEAD ^develop包含了更多的提交,在我当前的项目中是678 vs 97。

在这个分支上,我的提交历史是线性的,所以是YMMV,但它给了我想要的确切答案,即“到目前为止,我在这个特性分支上添加了多少次提交?”