В случае, если у вас есть сотни или тысячи фиксаций, используя ответ kostmo в о
git rebase -i --root
может быть непрактичным и медленным, просто из-за большого количества коммитов, которые сценарий rebase должен обработать дважды , один раз для генерации списка интерактивного редактора rebase (где вы выбираете, какое действие предпринять для каждого коммита), и один раз для фактического выполнения повторное применение коммитов.
Вот альтернативное решение, которое позволит избежать затрат времени на создание списка интерактивных редакторов ребаз , не используя интерактивный ребаз в первую очередь. Таким образом, это похоже на решение Чарльза Бейли . Вы просто создаете потерянную ветку из второго коммита, а затем перебазируете все коммиты-потомки поверх него:
git checkout --orphan orphan <second-commit-sha>
git commit -m "Enter a commit message for the new root commit"
git rebase --onto orphan <second-commit-sha> master
Документация