【问题标题】:GIT rebase merge branchGIT rebase 合并分支
【发布时间】:2018-09-27 19:33:40
【问题描述】:

我遇到了 GIT 问题。我有以下情况:

       -> M1 -> M2 -> ............. Ma -> Mb -> Mc            [master]
          \                                \
           \                                \ (merge 'master' to 'merge_branch' without commit 'Mc')
            \ (create branch 'develop')      \
             \                               /-> A -> A1      [merge_branch]
              \                             /
               \                           / (create branch 'merge_branch' from 'develop' at 'Da')
                \                         /
                 \ -> D1 -> ...........-> Da -> Db           [develop]

我想重新设置分支'merge_branch'(从提交'Db'而不是'Da'开始)

       -> M1 -> M2 -> ................... Ma -> Mb -> Mc            [master]
          \                                       \
           \                                       \ (merge 'master' to 'merge_branch' without commit 'Mc')
            \ (create branch 'develop')             \
             \                                      /-> A -> A1      [merge_branch]
              \                                    /
               \                                  / (create branch 'merge_branch' from 'develop' at 'Da')
                \                                /
                 \ -> D1 -> ...........-> Da -> Db           [develop]

在 master 分支上有很多提交(数千个)。当我在 'merge_branch' 上并开始 rebase 'git rebase develop' 时,我收到了很多冲突。

我通常创建一个新分支,再次进行合并,但我必须解决与之前解决的相同的合并冲突。它比变基分支快得多,但也很慢......

你有什么想法可以解决这个问题吗?

【问题讨论】:

  • 从你的图表中我不清楚分支点在哪里。你能把它格式化成this吗?

标签: git git-merge git-rebase


【解决方案1】:

我认为这里的问题是您从develop创建了一个merge_branch,这太超前了master。在您的情况下,您应该从您的 master 分支这个 merge_branch:

git checkout master

# branch out from master and checkout, now you are on merge_branch
git checkout -b merge_branch   

# force delete Mc on merge_branch
git reset --hard Mb  

# attempt to merge with develop to catch up
git pull --rebase origin develop   

取决于你的开发和主控之间的同步程度,你可能仍然会遇到很多合并冲突。但是你不应该遇到重复的冲突,因为你将一个“更快”的分支合并到一个“慢”的分支中。

【讨论】: