我的问题与git describe: 中的莫名其妙的提交计数和提交计数计算有关,但与这两个问题都不完全相同。我一直在当前项目的功能分支上进行开发,并且一直在使用git describe
最近的标记和提交计数来获取功能分支的版本号,以生成我认为会单调增加的版本号。(例如,我的分支目前在 v1.1.0 之前有 96 次提交,所以我在v1.1.0-96-g1234567
向用户报告的版本中已经变成了“版本 1.1.0.96”。)
现在,master 分支最近被标记为 v1.2.0,我想将 1.2 版中所做的更改合并到我的功能分支中。所以我将 master 合并到我的特性分支中,我认为这git describe
会产生v1.2.0-1-g9876543
. 但相反,我得到了v1.2.0-97-g9876543
.
我理解为什么会发生这种情况:如 Git 手册中所述,git describe
正在计算由git log v1.2.0..9876543
产生的提交以产生提交计数(97,因为我的分支有 96 个提交加上一个合并提交)。但我真正想要的是使用结果,git log --ancestry-path v1.2.0..9876543
它只显示合并提交,因此会产生v1.2.0-1-g9876543
我期望的结果。
有什么办法让我改变git describe
使用git log --ancestry-path v1.2.0..9876543
而不是的行为git log v1.2.0..9876543
?
而且,更重要的是,以目前的方式这样做有什么好处git describe
?如果我编写自己的工具来生成我一直期望的版本编号方案,这样做会失去什么?
顺便提一句。这是 git 存储库历史的快照,因此您可以直观地看到我刚刚描述的内容。feature/cmdline
分支是我正在处理的分支。(这个历史视图来自 Windows 上的Git 扩展工具,以防有人想知道。)