Git отменить коммит слияния в сложной ситуации (слияние, откат, слияние, ...) - PullRequest
0 голосов
/ 08 мая 2019

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

Иногда мы также вносим исправления в мастер, но затем объединяем мастер в разработку, чтобы избежать будущих конфликтов слияния.

Проблема

В какой-то момент я слил мастер обратно в разработкуно при решении конфликтов слияния удалил некоторый код, который был сделан в разработке.Теперь мы осознали проблему, которая была создана, поэтому теперь нам нужно отменить это конкретное слияние.

Итак, позвольте мне поделиться с вами некоторой информацией.

master

  • hotfix-1
  • hotfix-2
  • hotfix-3
  • слияние развивается
  • откат слияния развивается

текущее состояние: нормально

развивается

  • запущено из мастера
  • работа a
  • работа b
  • работа объединения из test_1
  • работа объединения из test_2
  • объединение мастера в разработку
  • работа c
  • работа d
  • работа e

Если вас беспокоит хронологическоепорядок, последние 2 коммита мастера являются последними изменениями.

Что я хочу

Я надеюсь, что есть возможность отменить слияние, поскольку я полностью пуст.

Параметры:

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

Важным моментом является то, что я могу не получить полную картину, так как я только что прочитал, что после слияния обе ветви делятся историей, и когда я перехожу кхеш коммита в bitbucket Я вижу мастера во всех коммитах.Я предполагаю, что коммиты были переданы мастеру.

Любая помощь или идеи будут очень полезны.спасибо.

1 Ответ

0 голосов
/ 08 мая 2019

Вы в правильном направлении. Git - это односторонний путь, и нет пути назад.

Либо вы можете использовать 2-й вариант, указанный вами. Вы должны создать ветку перед коммитом marge. затем объедините мастер в этой ветке. После этого вы должны удалить развивающую ветку и переименовать эту вновь созданную ветку.

Другой способ заключается в том, что вы можете создать новую ветку из master и выбрать изменения вишни (вы также можете объединить созданные вами ветки для функций / ошибок, вместо того, чтобы делать вишню), которые вы сделали в разработке ветки, и снова получить создайте резервную копию разработки, удалите разработку и переименуйте вновь созданную ветку в развитие.

Я бы рекомендовал использовать git rebase для такого слияния для лучшей и чистой истории https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase.

...