Git:计算自标签以来的提交次数

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应该显示主分支上的每个提交,因此产生的数字应该比1.7Start^..master大,后者只会给出差异部分吗?

这让我想到1.7Start^HEAD之间没有共同的历史记录。为了测试是否如此,请查看git merge-base 1.7Start^ HEAD的输出 - 我猜测会出现错误,表明没有共同的提交。 - Mark Longair
没有错误,也没有返回值。 - Nathan W
对,这表明没有共同的历史记录,这很令人惊讶。这个标签是如何生成的? - Mark Longair
更准确地说,为什么1.7StartHEAD有不同的根提交? - Mark Longair
1
啊,我现在明白发生了什么事情了。大约在同一时间,我们从svn迁移到了git。1.7分支已经在svn中创建,因此1.7分支中的提交与主分支不同,因为它从未从那里分支出来。我在主分支中找到了相同的提交并创建了一个新标签。现在运行良好。 - Nathan W
git rev-list --count HEAD ^<你的标签> 参见:https://dev59.com/uGgu5IYBdhLWcg3wAiYi - jose
3个回答

5
你得到的结果表明1.7Start^HEAD之间没有共同历史,因此1.7StartHEAD必须有不同的根提交。(当传递给git rev-list时,语法a..b的意思是“b中的每个提交都不在a中”。)
在上面的评论中,提问者指出这是因为该仓库从Subversion迁移而来,而master1.7Start指向的导入分支完全不同。

4
如果您只关心最后一个标签,这是很典型的情况,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

结合这里建议的Xcode构建阶段bash脚本 https://dev59.com/sWox5IYBdhLWcg3wWjHQ#24750392 - 构建号可以自动更新以反映自上次发布(最近标记的)以来的Git提交数量。完美。 - Johan

3

Git有git rev-list --count命令,比wc-l更快地完成此任务。

后来的Git版本中还有git rev-list --use-bitmap-index --count选项,它是--count的优化。

为了找到您当前分支存储库中的所有提交记录,rev-list需要一个提交记录示例。

git rev-list --count HEAD 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接