Невозможно объединить мастер с функцией ветвления после отмены принудительного объединения

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

Затем я случайно слил ветку объектов в мастер (слишком рано, я собирался объединить наоборот, как раньше). Поскольку слияние уже было перенесено, я использовал git revert -m 1 <merge-commit> отменить принудительное слияние в соответствии с этими инструкциями.

Откат, кажется, работал нормально, но теперь у меня проблема в том, что, когда я пытаюсь объединить мастер с веткой функций, большинство изменений в ветке функций перезаписываются "старыми" файлами в мастере. Похоже, что после возврата, мастер считается, чтобы иметь более новые версии файлов. Я также подозреваю, что я не смогу слить ветку функций в мастер, когда мы закончим.

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

2 ответа

Решение

Я выполнил следующие шаги, и, похоже, проблема решена:

  1. сделать резервную копию ветви функции
  2. объединить мастер в ветку объектов (в этот момент "устаревшие" файлы из мастера объединяются в ветку объектов)
  3. удалите все файлы ветки функции из git и зафиксируйте
  4. скопировать резервную копию ветви функции в локальную ветку функции
  5. добавить все файлы в 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 и подтолкните своего нового мастера Это может быть немного обходным путем, но это должно по существу вернуть мастер туда, где он был раньше, и позволить вам продолжить слияние с функцией.

Другие вопросы по тегам