7

我正在尝试计算自标记以来的提交次数。

我尝试过使用git rev-list,但无论我尝试什么,它似乎都会返回相同的结果。这是我尝试过的:

$ git rev-list 1.7Start^..HEAD | wc -l
13902
$ git rev-list HEAD | wc -l
13902

试图计算自 1.7Start 标签创建以来的提交次数。我目前正在master使用HEAD,但使用git rev-list master | wc -l给了我同样的结果。

自 1.7 以来没有超过 13000 次提交

应该git rev-list master向我展示 master 中的每一个提交,从而产生一个更大的数字,而不是1.7Start^..master应该给我带来差异的数字吗?

4

3 回答 3

5

您得到的结果表明1.7Start^and之间没有共同的历史记录HEAD,因此1.7StartandHEAD必须具有不同的根提交。a..b(传递给的语法仅表示“不在 . 中的git rev-list每个提交。)ba

在上面的评论中,提问者指出这是因为存储库是从 Subversion 迁移的,并且与指向master的导入分支完全不同1.7Start

于 2012-05-31T05:45:38.583 回答
3

Git 有 git rev-list --count 比 wc-l 更快。

git 后期版本中还有 git rev-list --use-bitmap-index --count ,是对 --count 的优化。

rev-list 需要一个提交,举个例子,在你的 repo 中为你当前的分支找到所有提交。

git rev-list --count HEAD 
于 2015-07-03T00:50:04.740 回答
3

如果您只关心最后一个标签,通常git describe会告诉您最后一个标签是什么以及自它以来在当前分支中进行了多少次提交。例如,在下面的输出中,最后一个标签是 0.1.9,并且在当前分支中进行了 67 次提交。

$ git describe --tags

0.1.9-67-gff9fd30

为了验证,您可以使用以下命令查看完整的提交列表。

$ git log --oneline $(git describe --tags --abbrev=0)..

如果将其输出通过管道传输到wc -l,则应返回相同的计数。请注意,这!!是 Bash 中的前一个命令。

$ !! | wc -l

67
于 2018-02-22T17:50:22.137 回答