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


132

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

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


Ответы:


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 выполнит свою работу.
Торек
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.