Итак, мы получили ветвь git в сложное состояние:
Две ветви: <pre>* master
* other_branch
На прошлой неделе кто-то случайно слил other_branch (преждевременно) с мастером и выдвинулк происхождению.Мы заметили ошибку, и я, по своей наивности, обязался <pre>
git revert bad_merge_commit
«исправить» проблему.Все выглядело хорошо, мы продолжили свою жизнь ...
Сегодня мы попытались объединить master с other_branch как шаг к приведению other_branch в master.Но мой возврат, похоже, вызвал кошмар.Когда мастер сливается с other_branch, вся (большая часть?) Работа над other_branch удаляется.Я предполагаю, что это потому, что мой возврат инструктирует об отмене всех более старых коммитов.
Конечно, сейчас многочасовые коммиты на мастере поверх моего возврата, поэтому распутывание выглядит так, как будто это может быть трудно.
Есть ли способ исправить повреждение?Могу ли я, возможно, обратиться с некоторым аргументом перебазировки и удалить два оскорбительных коммита?
Большое спасибо!
[Обновление - добавление сведений о текущем состоянии по запросу]
other_branchотделился от мастера довольно давно.Наша стандартная практика - многократно объединять master с other_branch, чтобы минимизировать накопление конфликтов (иногда мы перезагружаемся, но не в этом случае).
мастер коммитов A |Б |C |BAD_MERGE [other_branch_ @ S] |REVERT_OF_BAD |D |E |F ... HEAD
other_branch фиксирует P |Q |R |S [BAD_MERGE_FROM_HERE] |T |U |V ... HEAD
Попытка объединить мастер HEAD с other_branch HEAD вызывает проблему.
Чарльз, я сейчас пытаюсь исправить дубликат мастера, используя решение, которое вы предложилиздесь: Как удалить выбранные записи журнала фиксации из репозитория Git, сохранив их изменения? .
[/ Update]