Вернуть коммит в мастер, как вытащить мастер вниз без эффектов возврата? - PullRequest
0 голосов
/ 26 июня 2018

Несколько недель назад я нажал на что-то, что нужно освоить, и в итоге мне пришлось вернуться назад.

Теперь я внес изменения и готов снова подтолкнуть их к мастеру. Мой обычный рабочий процесс заключается в извлечении мастера, извлечении последней версии из источника, извлечении ветви функций, объединении новых изменений из мастера и создании PR для мастера.

Когда я пытаюсь объединить изменения с master, возвратный коммит удаляет много вещей в моей ветви функций, которые мне нужно сохранить.

Как лучше всего справиться с этим?

1 Ответ

0 голосов
/ 22 июля 2018

Итак, вы говорите, что мастер происхождения был возвращен, но вам нужно добавить обратно внесенные изменения? Как

                     [branch feature/A-Fixed]
                   o commit A-fixed
[branch master]    |
commit revert A *  |
                | /
                |/
       commit A o
                |
                .

В этом случае объединение мастера с вашей веткой объектов означает, что к вашим изменениям будет добавлен возвратный коммит, помеченный * на приведенном выше графике, поэтому из вашей ветки удаляется материал.

Итак, что вы можете сделать, это создать новую ветку, начиная с фиксации возврата, затем снова вернуться к возврату (un-revert <), объединить эту ветку с вашей веткой возможностей, а затем слить master с вашей веткой. </p>

git checkout <reverted> -b revert-branch
git revert <reverted>
git checkout feature/fixed-A
git merge revert-branch # rebase would also work
git branch -D revert-branch
git merge master
#...  continue with your normal workflow

Таким образом, при слиянии master, возврат уже находится в вашей ветви функций, но отменен фиксацией unrevert, поэтому возврат не будет добавлен к вашим изменениям.

                        [branch feature/A-Fixed]
                      o merge revert-branch
                     /|
                    / | [previous state of branch feature/A-Fixed]
                   |  o commit A-fixed
                   |  |
                   o commit revert revert A
[branch master]    |  |
    new commit  *  |  |
                | /  /
                |/  /
commit revert A o  /
                | /
                |/
       commit A o
                |
                .

Вы можете видеть, что теперь возвратный коммит уже находится в вашей ветви функций, поэтому объединяющий мастер может добавить другой коммит, отмеченный * выше, но не вернуть.

Как правило, в ситуации, когда что-то было возвращено мастеру, и вы хотите поработать с ним и нажать его снова, вы должны начинать с фиксации возврата и сначала отменять (git revert revert-commit).

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