Как перефразировать коммит Git по его хэшу SHA1?

Я создал фиксацию с сообщением фиксации, которое я хочу изменить. Я еще не опубликовал коммит, поэтому я могу безопасно переписать историю. Я могу найти с помощью журнала git, поэтому я знаю его хэш sha1. Как я могу быстро отредактировать коммит?


person Bengt    schedule 09.12.2013    source источник


Ответы (2)


Вы можете проверить рассматриваемый коммит, изменить его сообщение и вручную перебазировать обратно в свою ветку:

$ git checkout FIRST_COMMIT_SHA
$ git commit --amend
$ git rebase HEAD THE_BRANCH_YOU_CAME_FROM

Этот псевдоним git автоматизирует этот процесс:

reword = "!f() { branch=`git symbolic-ref --short HEAD`; git checkout $1; git commit --amend; git checkout $branch; }; f"

Чтобы добавить его в свой ~/.gitconfig:

$ git config alias.reword "!f() { branch=`git symbolic-ref --short HEAD`; git checkout $1; git commit --amend; git checkout $branch; }; f"

Затем используйте так:

$ git reword SHA1_OF_THE_COMMIT_TO_BE_REWORDED

Кредиты:

person Bengt    schedule 09.12.2013

В качестве альтернативы изменение исходного сообщения фиксации может быть выполнено с помощью команды rebase и установки флага --root. Кроме того, вам нужно будет указать интерактивный режим и использовать edit для первого коммита, например:

git rebase -i -root

// Specify 'edit' for the first commit.

// Amend first commit message here.
git commit --amend

Подробнее о флаге --root см. здесь. .

Кроме того, при условии, что коммит с сообщением, которое вы хотите изменить, находится в ветке, над которой вы работаете, вы также можете легко решить эту проблему с помощью интерактивной перебазировки. Просто найдите соответствующий короткий SHA-1 и укажите edit, чтобы разрешить изменение его сообщения фиксации.

person miqh    schedule 09.12.2013
comment
Это работает только в том случае, если коммит, который нужно переформулировать, является корневым коммитом. Поскольку ОП (я) не уточнил, может быть так или нет. - person Bengt; 09.12.2013