Разделение первого фиксации в git

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

Ответы

Ответ 1

Вы можете просто выполнить точно такой же процесс в вопросе, с которым вы связались, но после проверки корневой фиксации вы можете использовать git commit --amend для изменения первоначальной фиксации, а затем git commit, чтобы сделать дополнительную фиксацию до продолжения с командой rebase.

В зависимости от того, как вы хотите разделить фиксацию, вы можете использовать git rm --cached для удаления файлов, которые вы хотите добавить во время второго фиксации перед исходным git commit --amend, и отредактировать любые файлы, которые вы хотите отличить, перед вызовом git add в этих файлах, перед тем, как вы вызовете git commit --amend.

После вызова git commit --amend, чтобы убедиться, что вы точно зафиксировали состояние исходной корневой фиксации, вы можете позвонить:

git checkout <sha1-of-original-root> -- .

перед вызовом git commit, чтобы сделать вторую фиксацию фиксации root.

Ответ 2

Вы можете использовать параметр --root, чтобы сообщить rebase, что вы хотите переписать команду root/first commit:

$ git rebase --interactive --root

Затем корневая фиксация будет отображаться в списке TODO переустановки, и вы можете ее отредактировать:

edit <root commit sha> <original message>
pick <other commit sha> <message>
...

Это объяснение --root из Git документов для подделки:

Восстановите все коммиты, достижимые с <branch>, вместо того, чтобы ограничивать их <upstream>. Это позволяет вам переустанавливать корневую фиксацию на ветке.