Como faço para fazer o rebase do primeiro commit?

130

Eu costumava git initcriar um novo repo, então fiz três commits. Agora eu quero fazer um rebase para voltar e alterar meu primeiro commit, mas se eu fizer git rebase -i HEAD~3isso reclame! Se eu tentar o mesmo HEAD~2, meio que funciona, mas só me permite reorganizar os dois últimos commits.

Como me refiro ao 'commit antes de haver qualquer commit' ou voltar e inserir um commit vazio?

lxs
fonte
4
Possível duplicata de Edit the root commit no Git?
Liam

Respostas:

219

A maneira mais fácil, com um git recente o suficiente (ele já existe há muito tempo, então você deve tê-lo):

git rebase -i --root

A outra maneira fácil, como twalberg observou em um comentário , é usar git checkout --orphanpara configurar para fazer um novo commit de root, do qual você pode copiar os commits antigos. (Isso é o que rebase -i --rootacaba fazendo internamente de qualquer maneira.)

Torek
fonte
Usando git rebase -i --root, obtenho o erro error: cannot 'fixup' without a previous commitao tentar esmagar o segundo commit (eu só quero o primeiro)
mikemaccana
O que exatamente você está editando na folha de instruções? Você deve ter uma lista de commits, com o mais antigo no topo, e o comando pickpara cada um. Mude o segundo pick para squashou fixup, escreva a folha de instruções, saia do seu editor e o Git fará o trabalho.
Torek de