这是我的设置:我已经分支了#34; master",并且无意合并" my_branch"回到主人。但是,我想继续获得掌握的所有更新。
如果我在MC1(主提交#1)上分支主服务器,并向my_branch(BC1和BC2)添加新提交,并且有人在此期间向主服务器(MC2)添加新提交,我希望历史记录为:
MC1<-MC2<-BC1<-BC2
过去,我用过:
git fetch origin
git rebase origin/master
到目前为止一切顺利。它重播BC1和BC2,我修复了合并冲突,并且重新设定 - 继续直到完成。但是,最终提交涉及合并&#34;合并分支&#34; my-branch&#34; github ....进入我的分支(也许那就是开始出错的地方?)
然后我向我的分支添加了更多提交(BC4,BC5)。与此同时,MC3被添加到master。所以我再次尝试改变......
重播BC1。我必须重做我已经处理的合并冲突(例如,我在MC1中从MC1更改的代码没有从MC1通过MC3更改)。我发现自己不得不挑选合并冲突,以后补丁会自行改变。 my_branch历史现在包括每个额外的rebase分散的BC1的多个副本。
有没有更好的方法来处理上游变更的分支和合并?
答案 0 :(得分:1)
我强烈建议您重新考虑是否绝对需要变基。将上游合并到您的分支可能是更好的选择:
git fetch origin
git merge origin/master
这将:
重新绑定本质上会重新创建您正在变基的所有提交,因此正常/预期,您的历史记录包含同一提交的多个版本。
通过合并工作流程,您的历史记录将如下所示:
MC1 <- MC2 <- MC3
^ ^ ^
\ \ \
BC1 <- BC2 <- BC3 <- BC4 <- BC5 <- BC6
BC3
和BC6
是合并提交,解决潜在冲突。
恕我直言,对于以下方面来说,变基是一个好主意:
另一种选择是将所有提交压缩为单个提交,实际上保护您不必每次都解决合并冲突。但是,由于这会使你失去历史,它可能不是一种选择。