Сложный маневр git rebase - PullRequest
2 голосов
/ 21 мая 2010

Глядя на справочную страницу git-rebase, я не видел диаграмм, которые выглядели бы так, как я хочу (за исключением того, что некоторые, кажется, делают обратное тому, что я хочу), и игра с --onto не получила мне то, что я тоже хотел.

Дайте мне посмотреть, смогу ли я нарисовать диаграмму, подобную диаграмме со страницы руководства git-rebase (вертикальные полосы слева позволяют правильно отформатировать Markdown):

|      o-o-o-o-branch2
|     /
| -o-o-A-master-o-branch1-o-o-my_WIP_branch

branch1, вероятно, здесь на самом деле не важно, но я все равно включил его. То, что я хочу сделать, это получить (исключая ' s, которые обычно сопровождают git-rebase диаграммы man-страниц):

|     o-o-o-o-branch2-o-branch1-o-o-my_WIP_branch
|    /
|-o-o-A-master

По сути, я хочу поставить свою работу my_WIP_branch над работой branch2, не сталкиваясь с конфликтами слияния, связанными с группой коммитов, помеченных A. Есть ли какой-нибудь способ сделать это, кроме ручного выбора вишни каждого коммита по branch2 (или, по крайней мере, может быть, есть простой способ сделать это?)? Между прочим, будут конфликты слияния, поэтому в идеале это должна быть команда git или группа команд git, которые обрабатывают их изящно (например, git rebase изящно обрабатывает их, git am и git apply нет).

1 Ответ

4 голосов
/ 22 мая 2010

Странно ... потому что это должен быть классический случай rebase --onto.

У вас есть:

     o-o-o-o <--branch2
    /
 o-o-o-A <--master
        \
         -o-o <--branch1
             \
              -o-o <--my_WIP_branch

Вы хотите:

                  -o-o <--my_WIP_branch
                 /
             -o-o <--branch1
            /
     o-o-o-o <--branch2
    /
 o-o-o-A <--master

Это должно быть:

$ git rebase --onto branch2 master my_WIP_branch

он будет воспроизводить любые коммиты не на главном сервере, а там, где вы можете добраться до my_WIP_branch (то есть, коммиты из branch2 не подходят).
См. Мой другой SO-ответ для инструкций по конфликту слияний и раздел «разрешение конфликтов слияния» руководства Git. (вы можете принять все слияния с вашей версией, например )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...