首页 > 解决方案 > 使用 git 命令获取自另一个分支的标签以来的提交次数

问题描述

我正在尝试在除主分支之外的另一个分支中查找自标记以来的提交次数(主要是创建标记的分支)。
我在这里检查了几个 q/a 建议 'git rev-list' 和 'git describe' (有很多标志组合和不同的参数顺序)但没有太大成功,在我的情况下得到正确的数字......

对于我们的示例,我们有 2 个分支是maindev

在我们的工作流程中,我们将发布时的新版本标记为 main。然后我们合并maindev. 从那里开始,我很想得到提交的数量,因为只有dev这个版本/标签。

假设我们刚刚标记main了“v1.2.3”并合并maindev. 如果我更改文件main并提交它,以下命令将产生 '1' ,这很完美。

`git rev-list v1.2.3..HEAD --count`  

现在,如果我在这种情况下结帐dev并使用相同的命令,我会得到类似 17 的结果。在这种情况下,我想获得 0 (或 1 用于合并条目)。
如果我然后在这里编辑/提交一个文件dev并运行这个命令,我有 18 个;+1 是预期的。

main当我合并dev并从那时开始计数时,如何将此计数器“重置”为 0 ?或者使用什么好的参数?
我再次尝试使用参数--first-parent/--no-merges等等;我可以减少数字,但永远不会得到 0 或 1(1 可能用于合并的提交,我也可以)

谢谢

标签: git

解决方案


这 17 次提交很可能是该提交的同级提交,因为在发布测试时被冻结而v1.2.3积累起来。他们在历史上既不领先也不跟随。在这种情况下,它看起来像是在告诉您自两个分支的共同祖先以来的所有提交。devmainv1.2.3git

如果您从合并提交而不是标签中计数,您将得到您正在寻找的零,但是这会将这 17 次提交打折到 dev 并且看起来您当前的状态实际上是dev+ 17 次其他提交。v1.2.3v1.2.3

示例回购:

* eb8a717 | HEAD -> dev | first commit to dev after main merged back in
*   2862ad6 |  | Merge branch 'main' into dev
|\  
| * 33cf7dd | tag: v1.2.3, main| patch to initial version
* | 9458df5 |  | second commit to dev since branching
* | 53d6d29 |  | first commit to dev since branching
|/  
* 2ffc809 |  | first commit


$ git rev-list --count v1.2.3...HEAD
4

$ git rev-list --count 2862ad6...HEAD
1

也许您想将合并提交标记为适当的v1.2.4或适当v1.3.0v2.0.0,并从该标记中计数?


推荐阅读