Из справки git:
git-revert - отменить некоторые существующие коммиты
-m номер родителя, --основная линия родителя-number
Обычно вы не можете отменить слияние, потому что не знаете, какая сторона слияния должна рассматриваться как основная линия.Этот параметр указывает родительский номер (начиная с 1) основной линии и позволяет отменить изменение относительно указанного родителя.
Отмена фиксации слияния объявляет, что вам никогда не понадобятся изменения дерева, внесенныеслияния.В результате более поздние слияния будут вносить только изменения дерева, внесенные коммитами, которые не являются предками ранее отмененного слияния.Это может или не может быть тем, что вы хотите.
Как мы видим в документах, возврат коммитов слияния может быть не простым.
По этой причине действительно трудноскажу вам почему это произошло, не зная вашего дерева истории.
Но когда происходит такая ситуация, я обычно не использую git-revert
для коммитов слияния.
Вместо этого я использую следующий простой подход, который также может работать для вас:
Сначала сообщите членам вашей команды, что произошло, и что вы собираетесь это исправить, и они должны синхронизироваться, как только вы закончите.
Перейдите в ветку feature
и сбросьте ее до коммита до неудачного слияния:
$ git reset --hard hash_of_commit_prior_to_bad_merge
$ git push -f
Ваша ветвь очищена.Теперь перейдите к ветке test
и сделайте то же самое, сначала сбросьте настройки перед слиянием и нажмите принудительно, чтобы обновить пульт.
На этом этапе обе ветви чистые.
Теперь вы можетеначните заново, обновив ветку и следуя обычному процессу.
Дайте людям знать, что он исправлен.
Этот подход чистый и работает хорошо, если вы делаете это сразу после происшествия иКоманда позволяет вам принудительно толкать.
Поскольку вы работаете с ветками feature
и test
, я не понимаю, почему это не будет разрешено.
Даже если вы это сделаетеЧерез некоторое время и удалив чужой коммит из test
, вы можете просто объединить его снова после того, как закончите.
Если бы это был просто один коммит, git revert
было бы хорошо, хотя он и создаетновый коммит, но для коммитов слияния, избавиться от него определенно проще, эффективнее и менее подвержен ошибкам, чем возврат.
Надеюсь, это поможет.