使用git命令从另一个分支获取自标记以来的提交数



我正试图在除main之外的另一个分支(main指向创建标记的分支)中查找自标记以来的提交次数
我在这里检查了几个q/a,建议使用"git-rev-list"one_answers"git-descripte"(有很多标志组合和不同顺序的参数),但没有取得多大成功,在我的情况下,为了得到正确的数字。。。

对于我们的示例,我们有两个分支,即maindev

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

假设我们刚刚用"v1.2.3"标记了main,并将main合并到dev中。如果我在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可能用于提交合并,我也可以)

感谢

这17个提交很可能是v1.2.3提交的兄弟,自main被冻结用于发布测试以来,这些提交在dev中累积。它们在历史上既不在CCD_ 19之前,也不在其后。在这种情况下,看起来git正在告诉您自两个分支的共同祖先以来的所有提交。

如果你从合并提交而不是标记中计数,你会得到你想要的零,但这会将这17个提交折扣给dev,并使你在dev中的当前状态看起来是v1.2.3,而实际上是v1.2.3+17个其他提交。

样本回购:

* 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.4v1.3.0v2.0.0(视情况而定),并从该标记开始计数?

最新更新