GIT rebase ветка слияния - PullRequest
       64

GIT rebase ветка слияния

0 голосов
/ 27 сентября 2018

У меня проблема с 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]

Вкл.Мастер ветка много коммитов (тысяч).Когда я нахожусь на 'merge_branch' и начинаю rebase 'git rebase development', я получаю множество конфликтов.

Я обычно создавал новую ветку, снова выполнял слияние, но мне приходилось разрешать те же конфликты слияния, которые были разрешены ранее.Это было намного быстрее, чем перебазирование ветки, но тоже очень медленно ...

У вас есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 27 сентября 2018

Я думаю, что проблема в том, что вы создаете merge_branch из Develop, который слишком опережает 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   

Зависит от того, насколько синхронно между вашей разработкой и мастером, вы все равно можете столкнуться с множеством конфликтов слияния.Но вы не должны сталкиваться с повторяющимися конфликтами, поскольку вы объединяете «более быструю» ветку в «более медленную».

...