Come faccio a rebase il primo commit?


129

git initCreavo un nuovo repo, quindi ho eseguito tre commit. Ora voglio rebase per tornare indietro e modificare il mio primo commit, ma se lo faccio git rebase -i HEAD~3si lamenta! Se provo lo stesso con HEAD~2allora funziona, ma mi consente solo di riorganizzare gli ultimi due commit.

Come faccio a fare riferimento al 'commit prima che ci fossero dei commit' o tornare indietro e inserire un commit vuoto?


4
Possibile duplicato di Modifica il commit di root in Git?
Liam

Risposte:


217

Il modo più semplice, con un git abbastanza recente (è uscito da molto tempo quindi dovresti avere questo):

git rebase -i --root

L'altro modo semplice, come ha notato twalberg in un commento , è quello di utilizzare la git checkout --orphanconfigurazione per creare un nuovo commit di root, sul quale è possibile copiare i vecchi commit. (Questo è ciò che rebase -i --rootfinisce comunque per fare internamente.)


Utilizzando git rebase -i --rootottengo l'errore error: cannot 'fixup' without a previous commitquando tento di schiacciare il secondo commit (voglio solo il primo)
mikemaccana

Cosa stai modificando esattamente nel foglio di istruzioni? Dovresti avere un elenco di commit, con il più vecchio in alto e il comando pickper ciascuno. Cambia il secondo pick in squasho fixup, scrivi il foglio di istruzioni, esci dall'editor e Git dovrebbe fare il lavoro.
torek
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.