2010-10-18 32 views
6

Ho eseguito uno git pull --rebase e ho interrotto questa operazione dopo aver risolto diversi conflitti di unione utilizzando git rebase --abort.Git: ripristina repository divergenti dopo rebase fallita

Prima del tentativo rebase, git status mi ha detto: "Il tuo ramo è più avanti di" origine/master "di 20 commit." Ora ottengo: "Il tuo ramo e 'origine/master' sono divergenti, e hanno rispettivamente 15 e 5 commit diversi, rispettivamente."

Ho già effettuato un ripristino all'ultima commit (git reset --hard c15...e30), ma il messaggio di stato è sempre lo stesso.

Come faccio a ripristinare il mio repository allo stato è stato prima ho iniziato il pasticcio? E qual è la differenza tra lo stato attuale e il precedente?

Grazie.

+1

Cosa indica lo stato git come ramo corrente (la prima riga dell'output)? Inoltre, per riferimento, quali sono gli hash di commit rilevanti per origine/master, yourbranch e dove ci si trova ora (parte superiore di "git log")? Usa gitk --tutto per darti una foto migliore se ne hai bisogno. –

risposta

1

Il git rebase --abort avrebbe dovuto riportarti al TESTO originale. Non sono sicuro di cosa intendessi per "risolvere diversi conflitti di fusione usando ... abort". Intendevi --continue?

In ogni caso, la cosa da fare ora è consultare il reflog. Il reflog è un registro temporale locale di dove sono stati tutti i tuoi riferimenti. Se guardi allo .git/logs/HEAD puoi vedere dove HEAD (il working set) è stato. Sotto .git/logs/refs/... puoi vedere dove sono stati tutti i tuoi rami (locale e remoto). Ogni riga nel registro riflette un'azione. Lo SHA iniziale, la fine, l'utente, l'ora e una stringa che descrivono quale azione ha causato la modifica. Puoi trovare quello che vuoi e reset torna ad esso.