Стратегия: Создайте новую ветку, где все было хорошо.
Обоснование: Отменить слияние сложно. Существует слишком много решений, в зависимости от многих факторов, таких как то, совершили ли вы слияние или выдвинули его или были ли новые коммиты с момента вашего слияния. Также вам все еще нужно иметь относительно глубокое понимание git, чтобы адаптировать эти решения к вашему случаю. Если вы слепо следуете некоторым инструкциям, вы можете получить «пустое слияние», при котором ничего не будет объединено, и дальнейшие попытки слияния заставят Git сказать вам «Уже в курсе».
Решение:
Допустим, вы хотите объединить dev
в feature-1
.
Найдите ревизию, которую вы хотите получить слияние:
git log --oneline feature-1
a1b2c3d4 Merge branch 'dev' into 'feature-1' <-- the merge you want to undo
e5f6g7h8 Fix NPE in the Zero Point Module <-- the one before the merge, you probably want this one
Проверить это (вернуться во времени):
git checkout e5f6g7h8
Создайте новую ветку оттуда и проверьте ее:
git checkout -b feature-1
Теперь вы можете перезапустить слияние:
Слияние: git merge dev
Исправьте конфликты слияния.
Фиксация: git commit
Если вы удовлетворены результатами, удалите старую ветку: git branch --delete feature-1