master分支被回退后如何合并特性分支,保留主分支未被修改的代码内容
操作方案
方法1:合并时手动解决冲突(适用绝大多数场景)
- 先切换到本地master分支,同步远程最新内容
git checkout master git pull origin master
- 执行BR1分支合并命令,此时会触发
a.js文件的冲突提示
git merge BR1
- 打开冲突的
a.js文件,Git会自动用<<<<<<<=======>>>>>>>标记不同分支的内容:<<<<<<< HEAD到=======之间是master分支的内容(第一行是Hello Dog)=======到>>>>>>> BR1之间是BR1分支的内容(第一行是Hello Duck+第二行新增代码)
- 手动编辑文件,保留master的第一行内容,保留BR1新增的第二行内容,删除所有Git冲突标记,保存文件即可得到你需要的最终效果。
- 标记冲突已解决,提交合并结果
git add a.js git commit
- 推送到远程master即可
git push origin master
方法2:先变基再合并(适合保持提交记录线性干净)
如果你不需要保留合并提交记录,可以先把BR1的修改迁移到最新master的基础上,再执行快进合并:
- 切换到BR1分支
git checkout BR1
- 以最新master为基准执行变基操作,同样会触发
a.js冲突
git rebase master
- 按照方法1的规则修改冲突内容后,标记冲突已解决,继续变基流程
git add a.js git rebase --continue
- 变基完成后切换回master,执行快进合并即可
git checkout master git merge BR1 git push origin master
注意:不要直接使用
-X ours/-X theirs这类合并策略参数自动解决冲突:-X ours会直接采用master的全部内容,丢弃你在BR1新增的第二行代码;-X theirs会直接采用BR1的全部内容,覆盖master第一行的Hello Dog,均不符合需求。
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

