Невозможно объединить мастер с функцией ветвления после отмены принудительного объединения
Мы некоторое время работали над веткой функций с git. Время от времени я сливал мастер в эту ветку функций, чтобы синхронизировать ветвь функций с мастером и облегчать объединение ветви функций в мастер в конце.
Затем я случайно слил ветку объектов в мастер (слишком рано, я собирался объединить наоборот, как раньше). Поскольку слияние уже было перенесено, я использовал git revert -m 1 <merge-commit>
отменить принудительное слияние в соответствии с этими инструкциями.
Откат, кажется, работал нормально, но теперь у меня проблема в том, что, когда я пытаюсь объединить мастер с веткой функций, большинство изменений в ветке функций перезаписываются "старыми" файлами в мастере. Похоже, что после возврата, мастер считается, чтобы иметь более новые версии файлов. Я также подозреваю, что я не смогу слить ветку функций в мастер, когда мы закончим.
Как я могу вернуться к исходному состоянию, в котором я смог объединить изменения в мастере с веткой функций, не перезаписывая все другие изменения, сделанные в ветке функций?
2 ответа
Я выполнил следующие шаги, и, похоже, проблема решена:
- сделать резервную копию ветви функции
- объединить мастер в ветку объектов (в этот момент "устаревшие" файлы из мастера объединяются в ветку объектов)
- удалите все файлы ветки функции из git и зафиксируйте
- скопировать резервную копию ветви функции в локальную ветку функции
- добавить все файлы в git, commit и push
Я просто попытался сделать небольшое обновление в мастере и объединить его с веткой функций. Только незначительное обновление было объединено с веткой функций, но не устаревшие файлы от мастера.
Вы можете попробовать выполнить фиксацию непосредственно перед фиксацией Feature-Master. Ветка от этого master2
или что хочешь). Удалить текущий мастер. Потом ветка от master2
в новую ветку с именем master
,
git checkout <hash of commit before feature merge in master>
git checkout -b master2
git branch -D master
git checkout -b master
git branch -D master2
Удалить master
Разветвитесь на GitHub и подтолкните своего нового мастера Это может быть немного обходным путем, но это должно по существу вернуть мастер туда, где он был раньше, и позволить вам продолжить слияние с функцией.