Как изменить сообщения коммита в Git - AttractorSchool/ESDP-AP-10-1 GitHub Wiki

Важное предупреждение: Никогда не изменяйте сообщения (или что-либо связанное) у коммитов, которые уже были пушнуты.

Изменение сообщения последнего коммита

Если надо изменить сообщение только последнего коммита:

git commit --amend -m "New message"

Изменение сообщения более ранних коммитов (не пушнутых)

Если надо изменить сообщение коммита (коммитов), которые были сделаны ранее (но еще не были пушнуты):

git rebase -i SHA_HASH

где SHA_HASH - идентификатор родителя самого старого коммита, который необходимо изменить.

Пример

Предположим, у нас есть следующая история коммитов:

   (*) - master        $SHA_HASH_9  - мы сейчас находимся здесь (это наш последний коммит). у нас есть 4 коммита после последнего пушнутого (9, 8, 7 и 6)
    |
   (*)                 $SHA_HASH_8  - допустим, это один из коммитов, который нужно изменить.
    |
   (*)                 $SHA_HASH_7  - допустим, это один из коммитов, который нужно изменить.
    |
   (*)                 $SHA_HASH_6
    |
   (*) - origin/master $SHA_HASH_5  - это последний пушнутый коммит.

В таком случае, необходимо выполнить команду:

git rebase -i $SHA_HASH_6

После этого откроется редактор, в котором на самом верху появятся сообщения такого вида:

pick $SHA_HASH_7 Commit message for 7
pick $SHA_HASH_8 Commit message for 8
pick $SHA_HASH_9 Commit message for 9

Для тех коммитов, которые нужно изменить, нужно написать reword вместо pick, и сохранить этот файл под тем же именем, под которым он был открыт (просто сохранить). После сохранения откроется редактор, и будут представлены все сообщения commit-ов, по порядку, у которых вы написали reword.

Важное замечание при редактировании сообщения

При редактировании сообщения нужно помнить важную вещь - если ваше сообщение начинается с символа # (например, вы указываете тикет, в котором что-то делали, типа "#27 - changed something somewhere") то убедитесь, что этот символ не находится в начале строки, иначе вся строка будет обработана как комментарий. Чтобы такого не было, можно например поставить в начале строки пробел, или дописать "Ticket #27" (ну или что-то такое).

После сохранения файла с сообщением о коммите, если все нормально, сразу откроется второй файл, и т.п.

После завершения процедуры можно еще раз запустить push.