Как откатиться после слияния Git после нескольких слияний - PullRequest
1 голос
/ 22 октября 2019

Хорошо, у меня сегодня была такая ситуация, когда я слил ветку в master от другого разработчика, который по ошибке слил свою работу разработчика в ветку вместе с необходимыми изменениями. Я попытался откатить слияние после того, как я уже отправил его на удаленный сервер (а затем развернул его на некоторых производственных серверах - это было после uat), но не смог, потому что не смог найти общего или начального предка.

Вот в чем проблема:

Dev создает новую ветвь на основе master, а в ходе циклов работы и тестирования периодически объединяет master в ветку dev, а затем переводит ветку на удаленное отслеживание. ветка. Это происходило еженедельно в течение примерно 2 месяцев.

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

Кажется невозможным откатить толькоизменения из этой ветки, так как мастер регулярно сливался с ней в течение месяцев (для этой ветки год или 2 для проекта в целом). Я попробовал обычные методы, чтобы отменить слияние и фиксацию и т. Д. Я не могу выполнить сброс, так как он переведен в исходное положение.

Есть ли способ отменить слияние в этой ситуации?

1 Ответ

0 голосов
/ 22 октября 2019

Если вам разрешено переписывать историю на мастере (в исключительных случаях), и у вас нет других слияний с мастером, вы можете подумать:

git checkout master
git reset --hard HEAD~
git push -f origin master

ВНИМАНИЕ: этопереписывает master историю, поэтому все ваши разработчики должны обновить (git fetch) и убедиться, что они не сливают этот старый код обратно в master.

ПРИМЕЧАНИЕ: вы можете заменить HEAD ~ ссылкой на коммиткак раз перед неправильным слиянием. Все коммиты, начинающие неправильный коммит слияния, будут затем удалены. Обязательно сохраняйте ссылки (ветки, ...), чтобы не потерять эту работу.

...