Webdevkin
Онлайн-курсы, статьи по веб-разработке и интернет-магазинам, уроки vue.js

Изучаем Git. Урок 14.
git commit --amend и git reset

Урок, в котором мы узнаем,
как переименовывать, редактировать и отменять последний коммит

Видеоурок

Конспект урока

Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.

О чем пойдет речь в уроке

Гит отслеживает все изменения в коде. Мы уже изучали, как можно сбросить изменения в файлах до того как они были закоммичены. Но что делать, если нужно поправить изменения в уже сделанных коммитах?

Сегодня мы рассмотрим несколько способов, как переименовывать, редактировать и отменять последние коммиты

Как переименовать последний коммит

Это делается с помощью флажка --amend команды git commit

Как изменить последний коммит

Сначала нужно сделать нужные изменения в коде. Не важно, удалять или добавлять код. А затем выполнить все тот же git commit --amend

При этом откроется консольный редактор кода, где будет предложено ввести commit message, по умолчанию совпадающий с последним коммитом

Также это можно сделать одной командой

А если при этом нужно еще переименовать коммит, то можно сразу

Как отменить последний коммит

Для этого используется команда git reset. Эта команда не только удаляет файлы из подготовленных к коммиту, но и может удалять сам коммит

Это просто удаляет последний коммит

"Мягкий" вариант удаления последнего коммита

Это тот же самый reset, но с флажком --soft

Отличие от --hard состоит в том, что последний коммит тоже удаляется, но при этом остаются изменения, сделанные в этом коммите. То есть удаляется сам факт коммита, а не его содержимое

На мой взгляд это более безопасная отмена коммита, так как после этого можно решить, что делать с изменениями. Можно их сбросить, можно удалить часть кода, а можно что-то добавить

Того же самого можно достичь командой git commit --amend, как именно работать - дело вкуса

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

Важное замечание. Все операции из этого урока занимаются переписыванием истории коммитов. Это означает, что например, после git commit --amend хэш последнего коммита будет отличаться от того, который был до изменения или переименования коммита

То есть с точки зрения гита это совершенно новый коммит. Такие операции безопасно можно выполнять с локальными коммитами, которые еще не успели запушить.

Если переписывать историю коммитов после пуша, то у нас самих или наших коллег могут возникнуть проблемы. Какого рода проблемы и как их избежать или минимизировать риски - на эту тему будет отдельный урок

Спасибо за внимание и до встречи!

Все уроки курса

* платные уроки

список обновляется...