Представьте себе такой сценарий:Как отменить быстрый вперед слияния в Git без сброса
master: M
release-candidate: \ A--B'--C'
feature-A: \-A-///
feature-B: \-B--/ /
feature-C: \--C---/
релиз-кандидат был создан с помощью следующих команд:
git co master
git co -b release-candidate
git merge feature-A (FAST FORWARD)
git merge feature-B (REGULAR MERGE)
git merge feature-C (REGULAR MERGE)
Скажем, во время нашего перед выпуском тестирования мы обнаруживаем проблему с функцией A. Как мы отменим изменения, вносимые ускоренным слиянием этой ветки функций в ветвь релиз-кандидат?
Мы могли бы потенциально сбросить кандидат-релиз обратно в его состояние-хозяин и снова слить все допустимые функции, но это будет означать повторение большого разрешения конфликтов слиянием и введение возможности для ошибки.
Обратите внимание, что я указал только одну фиксацию на каждой из ветвей функций, но решение должно работать в случае, когда имеется более одной фиксации для отмены.
Это работает надежно даже при совершении конфликтов A и B/C? – Mifeet
Да, должно. Если есть конфликты, возврат прекратится, попросите разрешить конфликты, а затем вы можете выполнить git revert -continue'. Если это не работает с опцией '-n', используйте второй вариант, и после того, как все будет возвращено, используйте' git rebase -i', чтобы раздавить коммиты, если захотите. – Vampire