n1ro°
RU

Компьютеры · Инструкция

Как отменить merge-коммит через git revert -m

У merge несколько родителей, поэтому обычного `git revert <sha>` недостаточно.

Редакция N1RO · Проверено

Короткий ответ

Для merge-коммита укажите mainline: `git revert -m 1 <merge_sha>`. Номер parent определяет, относительно какой стороны Git обращает изменения.

Что делать

  1. Найдите merge через `git log --oneline --merges`.
  2. Посмотрите родителей: `git show --no-patch --pretty=%P <sha>`.
  3. Выберите правильный mainline и выполните `git revert -m <n> <sha>`.
  4. Просмотрите итоговый diff и тесты до push.

Проверка результата

  • В истории появился отдельный revert-коммит, merge-коммит остался на месте.
  • git show нового коммита обращает именно те изменения, которые требовалось отменить.

Важно

Неверный `-m` может откатить не ту сторону merge и повлиять на будущие слияния.

Что учитывать

Неверный `-m` может откатить не ту сторону merge и повлиять на будущие слияния.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. git-revert Documentation). Пример и формулировки — редакция N1RO на 2026-09-17.