git revert
git revert: отменить правки конкретного коммита (англ. revert — отменить).
git revert создаёт новый коммит, который вносит обратные правки для указанного коммита. Это позволяет нейтрализовать его последствия, не переписывая саму историю.
Главная цель git revert — дать безопасный и чистый способ отменить правки в репозитории, не переписывая его историю. Это особенно полезно при командной работе, где переписывание истории (например, через git reset) может вызвать путаницу и конфликты у других разработчиков.
При использовании git revert Git создаёт новый коммит с изменениями, противоположными тем, что были в оригинале. Затем этот новый коммит добавляется в историю репозитория, оставляя чёткий след: вот изначальные изменения, а вот их отмена.
git revert спасает, когда нужно отменить конкретное изменение из прошлого коммита, не затрагивая всё то, что было добавлено после него. Это позволяет ювелирно удалить проблемное изменение, сохранив целостность истории коммитов.
Примеры
Допустим, история коммитов выглядит так:
a1b2c3d (HEAD -> main) Update README
b2c3d4e Fix typo in main code
c3d4e5f Add new feature
2a291cc Initial commitЕсли нужно отменить правки коммита Fix typo in main code (b2c3d4e), поможет команда git revert:
git revert b2c3d4eОткроется текстовый редактор по умолчанию с предложением ввести сообщение для нового коммита отмены. После сохранения и закрытия редактора Git создаст новый коммит, который отменит правки из b2c3d4e:
f4b5a62 (HEAD -> main) Revert "Fix typo in main code"
a1b2c3d Update README
b2c3d4e Fix typo in main code
c3d4e5f Add new feature
2a291cc Initial commitТеперь последствия коммита Fix typo in main code нейтрализованы, но сам коммит остаётся частью истории, а его отмена зафиксирована отдельным коммитом.
.gitignoregit checkoutgit configgit taggit worktree