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

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

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

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

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

[cce lang=’bash’]
$ git log
[/cce]

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

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

[cce lang=’bash’]
$ git status
[/cce]

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

[cce lang=’bash’]
$ git add first.php
[/cce]

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

[cce lang=’bash’]
$ git commit —amend -m»It’s commit 3″
[/cce]

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

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

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

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

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

[cce lang=’bash’]
$ git commit —amend -m»Change comment in commit 3″
[/cce]

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

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

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

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