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


Deprecated: Function create_function() is deprecated in /home/worldhel/public_html/wp-content/plugins/codecolorer/lib/geshi.php on line 4698

В своем проекте Вы сделали изменения и зафиксировали их при помощи команды $ git commit -m"", и как обычно это бывает, подтвердив действие нажатием клавиши Enter, Вы вдруг поняли, что забыли добавить пару строчек кода, в какой-либо файл, или сделали неверный комментарий к коммиту, или забыли убрать из кода var_dump($foo) – отладочный тестовый вывод какой-либо переменной, или вам нужно добавить пару строк кода, логически подходящие именно под этот последний коммит, да и может возникнуть много других причин, по которым вы можете захотеть поменять содержимое кода или комментарий последнего коммита. И конечно же в самой популярной системе контроля версий Git предусмотрен механизм для такой незапланированной правки с помощью команды --amend.

ВНИМАНИЕ: Никогда не вносите изменения в последний коммит при помощи команды --amend, если данный коммит вы уже успели запушить на удаленный центральный репозиторий. В таких случаях вам нужно внести изменения в код с помощью нового коммита.

Правка кода в последнем коммите (ключ —amend).

На иллюстрации ниже показана история коммитов в текущем репозитории при помощи команды:

1
$ git log

В данном примере при создании последнего коммита была допущена неточность в комментарии к коммиту, и еще требуется внести небольшое изменение в код проекта. Для начала сделаем небольшие правки в файл first.php и воспользуемся для этого редактором nano.

Теперь, мы можем увидеть, что в нашем локальном репозитории, есть измененнные файлы, чье состояние пока что незафиксировано в системе контроля версий Git. Сделаем это при помощи команды:

1
$ git status

Данные изменения нужно добавить для фиксации в коммите, при помощи:

1
$ git add first.php

В иллюстрации выше видно, что сделанные изменения подготовлены к фиксации в коммите, но нам необходимо сделать это не в новом коммите, а добавить к последнему старому, и мы сделаем это с помощью ключа —amend (в переводе с англ.: изменять, вносить правки).

1
$ git commit --amend -m"It's commit 3"

В результате применения команды выше, НЕ СОЗДАЕТСЯ новый коммит, а вносятся изменения в последний уже существующий. Убедиться в этом можно применив команду $ git log

Как видно на изображении выше, в результате применения команды $ git commit --amend изменилось содержимое последнего коммита, о чем свидетельствует изменившийся ХЕШ-коммита, а также изменился последний комментарий коммита. Но без изменений остались дата и время коммита.

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

Следует стремится к тому, чтобы каждый коммит был логически законченным, поэтому при правильном процессе написания кода такая задача, как внесение правок в код последнего коммита, встречаться должна очень-очень редко. Но вот с чем точно придется столкнуться, так это изменение только комментария к последнему коммиту. Как правило это происходит по причине допущенной опечатки или желания немного по другому описать сделанные изменения в последнем коммите. В этом нам поможет тот-же ключ —amend.

Рассмотрим эту ситуацию на примере выше. Нам необходимо сделать только правку комментария, в этом случае мы сразу воспользуемся командой:

1
$ git commit --amend -m"Change comment in commit 3"

На изображении выше показан результат работы команды, а также вывод полученный при  $ git log для просмотра имеющихся коммитов. Так видно, что изменилось описание
и ХЕШ-сумма последнего коммита, а время и дата остались прежними.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *