Azure Pipeline推送GitHub标签提示提交不属于任何分支问题解决
Azure Pipeline自动化版本发布提交未合入main分支问题
问题场景
在Azure Pipeline中配置自动化版本发布任务,所有操作预期在main分支执行,任务流程如下:
- 更新version.txt中的项目版本号
- 更新CHANGELOG变更日志
- 提交上述两个文件的修改
- 使用新版本号创建对应tag
- 将所有变更推送回GitHub仓库
最初编写的执行脚本如下:
echo "$new_version" > version.txt git-changelog --tag "$new_version" git add CHANGELOG git add version.txt git commit -m "Bump to release $new_version" git tag -a "$new_version" -m "release $new_version" git push origin "$new_version"
异常现象
脚本执行完成后查看GitHub仓库发现,更新后的CHANGELOG与version.txt并未出现在main分支中,但新建的tag已成功创建;点击查看该tag时,可以看到对应提交中的两个文件变更,但页面弹出警告提示:
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

待确认的疑问:操作问题出在哪里,如何才能让提交正确合入main分支?已知Azure Pipelines会在自定义脚本运行前自动执行代码拉取,是否需要在执行Git命令前显式切换/检出目标分支?
问题根因与修复方案
经排查确认,Azure Pipelines的checkout操作默认检出的是对应提交的游离HEAD状态,而非分支本身。在脚本中增加显式检出main分支的步骤后,再执行暂存、提交、推送、打标签操作即可符合预期,修正后的可正常运行的脚本如下:
git checkout main # # 在此处添加修改CHANGELOG和version.txt的业务逻辑 # git status -v -b git add CHANGELOG git add version.txt git commit -m "Bump to release $new_version" git push origin main git tag "$new_version" git push origin "$new_version"
内容的提问来源于stack exchange,提问作者Nick Hirras
相关产品推荐
相关产品推荐

