Как отменить опубликованный коммит
Обратный коммит вместо переписывания общей истории.
В общей ветке обнаружилась неудачная правка. Коллеги уже могли получить её, а система сборки — выпустить артефакт. В такой ситуации удобно явно записать отмену в историю, чтобы было видно и исходное решение, и его исправление.
Выбрать точный коммит
git status
git log --oneline -8Перед отменой сохраните текущую работу и убедитесь, что находитесь в нужной ветке. Просмотрите содержимое выбранного коммита через git show, а не ориентируйтесь только на его короткое название. Иногда один коммит меняет сразу несколько подсистем.
Создать отмену
Для обычного, не merge-коммита используйте его идентификатор. В примере abc1234 — условный SHA, его нужно заменить.
git show abc1234
git revert abc1234Git применит обратные изменения и предложит сообщение нового коммита. Исходный коммит останется в истории. Если последующие изменения затронули тот же код, может возникнуть конфликт.
Если возник конфликт
Разберите конфликтующие файлы, выполните git add для исправленных путей и git revert --continue. Если выбрали неверный коммит, git revert --abort отменит незавершённую операцию.
Проверить поведение
Успешное завершение команды не доказывает, что приложение исправлено. Запустите проверку затронутого сценария и посмотрите итоговый diff. Отмена кода также не откатывает внешние эффекты: отправленные письма, удалённые данные или выполненную миграцию. Для них нужен отдельный план.
Merge-коммиты требуют выбора основной линии через параметр -m. Здесь нельзя механически подставлять единицу: сначала нужно разобраться, какого родителя следует считать основным.