Допустим, вы работаете над кодом в Git и вдруг что-то пошло не по плану. Вам нужно отменить ваш последний коммит. Как это сделать? Давайте разберемся!
Отменить последний коммит можно двумя способами. В этой статье мы рассмотрим оба.
Команда git revert
Команда git revert создает коммит, который возвращает изменения, внесенные с указанным коммитом. С помощью этой команды можно отменить последний коммит:
git revert <коммит-который-надо-вернуть>
Найти имя коммита, который нужно вернуть, можно при помощи команды git log. Первый коммит в выдаче и будет вашим последним созданным коммитом.
Вы можете скопировать его хэш (цифробуквенный идентификатор) и использовать его в команде revert.
Команда git reset
Отменить последний коммит можно также при помощи команды git reset. Но будьте осторожны: это изменит историю коммитов. Пользуйтесь этой командой пореже.
Эта команда смещает HEAD на последний коммит. По умолчанию используется опция —mixed. Все изменения после указанного коммита останутся в рабочем каталоге как неотслеживаемые.
git reset HEAD~1
Опция —soft позволяет сохранить незакоммиченные изменения (если они были) как staged.
git reset --soft HEAD~1
Если вы хотите сбросить все до последнего коммита, а также удалить все неподготовленные изменения, можно использовать опцию —hard.
git reset --hard HEAD~1
Таким образом вы вернетесь в положение до последнего коммита, но вместе с тем сотрете все изменения, не попавшие в коммит.
Что лучше использовать: reset или revert?
Используйте reset исключительно для сброса коммитов, существующих лишь локально. Эта команда меняет историю коммитов. А это может негативно сказаться на работе удаленных членов команды, которые могли основывать что-то на коммите, который вы сотрете.
Команда revert создает новый коммит, отменяющий изменения, и не перезаписывает историю коммитов. Так что, если коммит, который вы хотите вернуть, уже был запушен в общий репозиторий, лучше использовать revert.
Заключение
Мы разобрали два способа отменить последний коммит, а также разобрали, когда какой лучше использовать.
Теперь вы знаете, что делать, если вы вдруг заметите баг в вашем последнем коммите, или окажется, что изменения вовсе не должны были попасть в коммит!
Перевод статьи «Git Revert Commit – How to Undo the Last Commit».
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
а как вернуть коммит, который был revert? нужно, чтобы коммиты после не затерлись