Git revert: безопасный откат изменений без потери истории

Команда git reset деструктивна и изменяет историю Git. Она принимает SHA-1 хэш коммита и возвращает репозиторий, рабочую директорию и staging area к этому коммиту, удаляя последующие. Существуют три режима работы: soft, mixed (режим по умолчанию) и hard.

Git revert: Недеструктивная альтернатива

В отличие от git reset, git revert — недеструктивная операция, не изменяющая историю Git. Поэтому её безопасно использовать на публичных ветках, таких как master или release. git revert отменяет изменения только одного коммита, используя его SHA-1 хэш. Он создаёт новый коммит с обратными изменениями.

Практическое применение

Для демонстрации используем команду git log для поиска последнего коммита. Его SHA-1 хэш начинается с FD0e. Для отката последнего коммита можно использовать команду git revert HEAD. HEAD указывает на последний коммит.

Команда предложит изменить сообщение коммита. Это корректно, так как git revert создаёт новый коммит с обратными изменениями. Сообщение по умолчанию указывает на отменяемый коммит. Можно изменить сообщение или сохранить стандартное, используя :wq в редакторе vim.

После выполнения git revert, git log покажет новый коммит, отменяющий предыдущий. История Git не изменена. Изменения можно безопасно отправить на удалённый репозиторий.

Анализ изменений

Для просмотра изменений в каждом коммите используйте флаг -p с командой git log. Сравните изменения в отменённом и отменяющем коммитах. git revert просто обращает изменения исходного коммита.

Эта команда особенно полезна, когда изменения уже отправлены на удалённый репозиторий и доступны другим пользователям. В этом случае git revert — единственный безопасный способ отката изменений. git reset в этой ситуации неприменим.

Обработка конфликтов

Рассмотрим отмену коммита с конфликтами. git show <SHA-1> покажет изменения в коммите. Попытка выполнить git revert <SHA-1> приведёт к конфликтам. git status покажет неслитые файлы.

Конфликты разрешаются в редакторе кода (например, VS Code). После открытия файла с конфликтом, выберите нужные изменения и сохраните файл. После разрешения всех конфликтов, добавьте изменения в staging area (git add .) и продолжите операцию отката (git revert —continue). Команда снова предложит изменить сообщение коммита.

После завершения, git log и git show подтвердят успешную отмену изменений. Изменения видны и в графическом интерфейсе, например, в GitHub Desktop.

git revert — безопасный способ отката изменений без изменения истории Git. Отмена затрагивает только один коммит, в отличие от git reset, который позволяет отменить несколько коммитов. Однако, git revert создаёт новые коммиты.

git revert — мощный инструмент для безопасного отката изменений в Git, особенно полезный при работе с публичными ветками. Понимание его работы и умение обрабатывать конфликты — важный навык для любого разработчика.

Что будем искать? Например,программа