You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET项目main分支合并release后GitVersion版本计算异常

问题原因

版本计算异常由配置逻辑和操作缺失共同导致:

  • 你的main分支配置了prevent-increment-of-merged-branch-version: true,该规则会阻止GitVersion在main分支上直接继承被合并分支的版本号,也就是说release分支上算出的1.0.0不会直接作为main分支的版本计算基线。
  • release分支配置了is-release-branch: true,所以单独在release分支上时,GitVersion会直接从分支名(release/1.0.0)提取版本号得到1.0.0,但这个分支名取版本的逻辑仅对release分支本身生效,不会随合并操作自动同步到main分支。
  • 你在合并release到main之后,没有在合并提交点打符合tag-prefix: '[vV]'规则的版本标签(如v1.0.0),GitVersion在main分支遍历提交历史找不到任何可用的版本基线,就会回退到默认初始版本0.1.0。
修复方法

根据你的工作流习惯选一种即可:

  1. 遵循标准GitFlow实践(推荐):每次release分支合并到main时,在合并提交上打对应版本的标签,格式匹配你配置的tag-prefix,比如1.0.0版本就打v1.0.0标签并推送到远程。如果用Azure DevOps Pipeline做PR合并,可以加一个脚本步骤自动打标签,不需要手动操作。打完标签后GitVersion在main分支会直接识别标签作为基线,输出正确的1.0.0版本。
  2. 调整GitVersion配置:把main分支下的prevent-increment-of-merged-branch-version参数值改为false,这样合并release分支时,GitVersion会直接继承release分支的版本作为计算基础,不会回退到初始版本。注意改完后如果main分支在合并后有新的提交,会按照你配置的increment: Patch规则自动累加补丁版本号。
验证方式

本地切到合并后的main分支,在仓库根目录执行命令输出诊断日志,可以直接看到版本计算的全链路逻辑:

dotnet gitversion /diag

在输出日志里搜索BaseVersion条目,如果显示基础版本来源是Fallback base version,就可以确认是找不到版本基线导致的0.1.0问题。

内容的提问来源于stack exchange,提问作者dna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:21:27