Bitbucket旧master分支与release分支同步方案咨询(需保留历史)
解决方法
1. 先把代码拉到本地处理
先确保本地拿到最新的远程分支:
git fetch origin git checkout master git pull origin master git checkout release git pull origin release
2. 合并release到master(保留历史)
因为master停在2017年,和release差异大是正常情况,直接用merge就能完整保留两边的提交历史:
git checkout master git merge release
遇到冲突就逐个文件解决,不用因为1000+文件的变动慌神——这是两边代码隔了好几年的正常结果,只要冲突处理时仔细核对内容,不会出现文件丢失。
3. 检查合并结果
合并完成后一定要验证,确保release的所有代码都同步到了master:
# 对比master和release的差异,确认没有遗漏或误删 git diff release..master # 查看当前仓库状态,确认没有未处理的文件 git status
也可以直接查看项目目录结构,确认关键业务文件都存在。
4. 推回远程Bitbucket
确认合并结果无误后,把更新后的master分支推送到远程:
git push origin master
要是必须用Bitbucket的PR操作
如果不想在本地合并,非要走Bitbucket的PR流程,可以先这么做:
- 本地完成master和release的合并、冲突解决后,推一个临时分支(比如
temp-master-merge)到远程 - 在Bitbucket上创建从这个临时分支到master的PR,这样PR里的冲突已经提前处理完毕,不会出现意外问题
重要提醒
- 保留历史:别用
git rebase,就用git merge——merge会完整保留master原有的所有提交记录,完全符合你的要求。 - 防丢文件:合并前先给master做个备份分支,万一出问题能立刻回滚:
git checkout master git branch master-2017-backup git push origin master-2017-backup
- 处理冲突时,不确定的文件可以查看git历史,对比release和master的提交记录后再做选择。
内容的提问来源于stack exchange,提问作者AWS_Beginner
相关产品推荐
相关产品推荐

