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.