Я хочу изменить слово в коммите HEAD ^ 2, как это сделать?
РЕДАКТИРОВАТЬ Эти коммиты еще не были переданы. Так что это не показывается как pick xxxxxx
в интерактивном редакторе.
Я хочу изменить слово в коммите HEAD ^ 2, как это сделать?
РЕДАКТИРОВАТЬ Эти коммиты еще не были переданы. Так что это не показывается как pick xxxxxx
в интерактивном редакторе.
git rebase -i <name your branch's parent, probably "master">
Vim откроется, и вы увидите нечто подобное;
pick ba95551 Commit_message_1
pick 3e357b5 Commit_message_for_commit_I_want_to_edit
pick 5eee414 Commit_message_3
pick c9a1f38 Commit_message_4
Вы должны увидеть что-то вроде этого;
pick ba95551 Commit_message_1
e 3e357b5 Commit_message_for_commit_I_want_to_edit
pick 5eee414 Commit_message_3
pick c9a1f38 Commit_message_4
Нажмите "Esc" для входа в командный режим. Введите ": WQ", чтобы написать, выйти. Нажмите Enter.
Git теперь будет повторно применять ваши коммиты до этого момента. Тогда вы можете "редактировать предыдущий коммит", как обычно:
git commit --amend
или же
git gui
Интерактивная перебазировка также позволяет вам переупорядочивать и удалять коммиты по вашему выбору. Вы должны знать, что переписывание истории, как это повлияет на тех, кто ушел от вас. См. Восстановление из восходящей версии.
Если вы буквально хотите отредактировать HEAD^<n>
, то способ сделать это - запустить:
git rebase -i HEAD^<n+1>`
Первый коммит в списке должен быть HEAD^n
; изменить его команду от pick
для edit
.
Когда он вернет вас к приглашению, внесите изменения, зафиксируйте их и запустите git rebase --continue
.
Примечание. Если вы хотите изменить только содержимое этого конкретного коммита, вам также может понадобиться / нужно edit
следующий коммит (HEAD^<n-1>
), чтобы отменить все сделанные вами изменения. Возможно, самый простой способ сделать это - сначала пометить этот коммит, а затем исправить исправленную версию, выполнив git checkout <tag_name> .
из корня хранилища.