git - 使用 git 命令获取自另一个分支的标签以来的提交次数
问题描述
我正在尝试在除主分支之外的另一个分支中查找自标记以来的提交次数(主要是创建标记的分支)。
我在这里检查了几个 q/a 建议 'git rev-list' 和 'git describe' (有很多标志组合和不同的参数顺序)但没有太大成功,在我的情况下得到正确的数字......
对于我们的示例,我们有 2 个分支是main
和dev
。
在我们的工作流程中,我们将发布时的新版本标记为 main。然后我们合并main
到dev
. 从那里开始,我很想得到提交的数量,因为只有dev
这个版本/标签。
假设我们刚刚标记main
了“v1.2.3”并合并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
积累起来。他们在历史上既不领先也不跟随。在这种情况下,它看起来像是在告诉您自两个分支的共同祖先以来的所有提交。dev
main
v1.2.3
git
如果您从合并提交而不是标签中计数,您将得到您正在寻找的零,但是这会将这 17 次提交打折到 dev 并且看起来您当前的状态实际上是dev
+ 17 次其他提交。v1.2.3
v1.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.0
的v2.0.0
,并从该标记中计数?
推荐阅读
- python-3.x - 使用 MinMaxScaler 缩放数据导致不可散列的类型错误
- python - 用黑色高亮选中的项目,用绿色高亮已经选中的项目
- flutter - 从颤动的页面返回时如何刷新上一个屏幕/页面列表?
- drop-down-menu - 使用javascript在html中选择第一个选择框后如何打开第二个选择框的列表?
- php - 运行url并从结果url-PHP中获取参数值
- android - 我的用例可以使用什么本地搜索引擎?
- python - 有什么方法可以将 z-index 应用于 python-docx 单词报告中的图像,或者以其他方式在 python-docx 报告中添加背景/水印图像?
- java - 在 logback 中归档旧的滚动日志
- mongodb - 如何使用 mongodb 映射三个集合
- reactjs - 在 react-router-dom 中测试 PrivateRoute