编写Git脚本合并feature分支到master遇问题,求预查冲突方案
合并Feature分支到Master的脚本优化与冲突排查问题
当前执行流程
git checkout mastergit pull origin mastergit checkout feature-branchgit pull origin feature-branchgit checkout -b merge-branch- 修改版本号并提交
git merge --no-commit master(用于预查合并冲突)git push origin merge-branch- 通过GitHub API创建
merge-branch合并到master的PR
遇到的问题
创建PR后,当前处于merge-branch分支,出现提示:All conflicts fixed but you are still merging.,推测是因为git merge --no-commit master未完成合并提交导致的,考虑改用git merge master但暂无法测试。
问题原因与修正方案
你遇到的提示确实是因为git merge --no-commit命令让Git处于未完成的合并状态——这个命令仅执行合并操作但不自动生成提交,会留下合并的临时状态,推送分支到远程后,GitHub会识别到分支里存在未完成的合并流程,从而抛出该提示。
要修正这个流程,可调整第7步及后续操作:
- 若保留
git merge --no-commit master预查冲突:- 排查并解决所有冲突后,必须执行提交来完成合并,再推送分支创建PR:
git merge --no-commit master- 手动解决冲突
git add .(添加所有冲突文件)git commit -m "Merge master into merge-branch, resolve conflicts"git push origin merge-branch
- 排查并解决所有冲突后,必须执行提交来完成合并,再推送分支创建PR:
- 更稳妥的替代方案:直接执行
git merge master- 该命令会自动尝试合并,若有冲突会暂停,解决冲突后执行
git add .和git commit即可完成合并,不会留下未完成的合并状态,推送后PR也不会出现异常提示。
- 该命令会自动尝试合并,若有冲突会暂停,解决冲突后执行
更简便的预查合并冲突方法
不需要额外创建merge-branch,可直接在本地对feature-branch做预合并测试:
git checkout feature-branchgit pull origin feature-branchgit pull origin master(等同于git fetch origin master && git merge origin/master,直接拉取master并合并到当前分支)- 此时Git会自动检测冲突,若有冲突直接在本地解决,解决后提交(如需),之后基于更新后的
feature-branch创建PR即可。
或者使用Git的预合并测试命令,不修改本地分支:
git checkout feature-branchgit merge-tree $(git rev-parse master) $(git rev-parse HEAD) $(git rev-parse feature-branch)- 该命令会模拟合并
master和feature-branch,输出合并结果和冲突信息,但不会实际修改任何分支,适合快速预查冲突。
内容的提问来源于stack exchange,提问作者somya tripathi
相关产品推荐
相关产品推荐

