Как мне git перебазировать первую фиксацию?

132

Раньше я git initсоздавал новое репо, а затем сделал три фиксации. Теперь я хочу выполнить переустановку, чтобы вернуться и исправить свою первую фиксацию, но если я сделаю git rebase -i HEAD~3это, он пожалуется! Если я попробую то же самое, HEAD~2то это вроде как работает, но позволяет мне переставлять только последние два коммита.

Как мне сослаться на «фиксацию до того, как были какие-либо фиксации» или вернуться и вставить пустую фиксацию?

LXS
источник
4
Возможный дубликат редактирования корневого коммита в Git?
Лиам

Ответы:

223

Простой способ, с достаточно свежим git (его уже давно нет, так что оно должно быть у вас):

git rebase -i --root

Другой простой способ, как отметил в комментарии Твалберг , - это использовать git checkout --orphanдля настройки для создания нового корневого коммита, поверх которого вы можете скопировать старые коммиты. (В rebase -i --rootлюбом случае это то , что происходит внутри компании.)

Торек
источник
Использование git rebase -i --rootЯ получаю сообщение об ошибке error: cannot 'fixup' without a previous commitпри попытке раздавить вторую фиксацию (мне просто нужна первая)
mikemaccana
Что именно вы редактируете в инструкции? У вас должен быть список коммитов, самые старые из которых находятся вверху, и команды pickдля каждого из них. Измените второе значение pick на squashили fixup, запишите инструкцию, выйдите из редактора, и Git выполнит свою работу.
Торек