将master变更合入带多子分支的feature-branch且不影响子分支方案咨询
解决方案
你之前用rebase出问题的核心原因是rebase会重写feature-branch的提交历史,所有原有提交的哈希值都会发生变化,而衍生的子分支仍然绑定在旧的提交节点上,自然会出现游离、分叉等异常。这个场景不能使用rebase操作,改用merge操作即可,具体步骤如下:
步骤1:拉取master分支最新变更
- 先切换到本地master分支,同步远程最新代码
git checkout master git pull origin master
步骤2:合并master变更到feature-branch
- 切换回需要更新的feature-branch
git checkout feature-branch
- 执行master合并操作,不要加--rebase参数
git merge master
- 按提示解决所有合并冲突,完成后提交合并结果
git add . git commit -m "sync latest master changes to feature-branch"
步骤3:推送更新后的feature-branch到远程
git push origin feature-branch
原理说明
merge操作只会在feature-branch上新增一条合并提交记录,不会修改feature-branch之前的任何历史提交,所有衍生子分支绑定的原有父提交节点完全没有变化,不会受到任何干扰。后续如果子分支需要同步feature-branch的最新变更,只需要在各自子分支内执行git merge feature-branch即可,不会出现异常。
注意:不要在有衍生子分支、多人共用的公共分支上执行rebase操作,rebase仅适用于你本地私有、没有被其他人拉取过的分支。
内容的提问来源于stack exchange,提问作者Cholan Madala
相关产品推荐
相关产品推荐

