2012-03-17 14 views

risposta

3
git reset --hard HEAD^ 

Questo comando reimposta il ramo sul commit precedente, ovvero il commit prima del commit di unione, che è quello che si desidera annullare. Il tuo lavoro rimarrà intatto.

Ricorda che tutto ciò che è stato commesso è ancora lì come oggetti liberi e puoi sempre usare git reflog per tornare a qualsiasi versione che HEAD ha indicato prima. Questo è il motivo per cui è così importante impegnarsi spesso con git, puoi annullare tutte le modifiche che hai fatto con facilità.

+1

Tutte queste risposte usando 'git reset --hard _some local commit_' rendono il tuo repository un aspetto OK, ma lascia tutto commette dal repository remoto sbagliato nel tuo repository locale, quindi nessuno è un completo "annulla". git gc non cancellerà i commit sbagliati perché sono nel tuo reflog (dato che ti sei riferito di recente). Penso che alla fine scadrà, ma se vuoi ucciderli subito richiede un intervento più profondo. – skierpage

+0

@skierpage corretto. I commit sono ancora lì, a penzoloni, finché non li pulisci. Ci sono vari modi per farlo. Il modo più semplice è ri-clonare il repository (supponendo che tu possa buttare via quello che stai usando in questo momento) – ralphtheninja

3

Un modo per fare questo

$ git reset --hard latest-good-commit-hash 

Usa git log --all (o più graficamente, utilizzare gitk --all) per vedere la storia di commit

3

Prova git reflog. Reflog ti consente di annullare quasi tutte le operazioni. Qualcosa di simile

git reset --hard [email protected]{1} 

Tuttavia, se si ha copia di lavoro sporco, si cancellerà tutte le modifiche, quindi attenzione.

+0

Grazie! Ho aggiunto e commesso ma non spinto. ciò che è stato aggiunto e impegnato non sarebbe stato sopraffatto da questo ora, vero? – Barka

+0

Questo è corretto, se tu avessi aggiunto e commesso, ciò che avevi aggiunto e commesso sarà ancora lì dopo questo. –

+0

@ user277498, vedi anche l'output di 'git reflog' prima di eseguire il' reset'. Contiene informazioni su cosa vuol dire che il suffisso '@ {1}' significa davvero, non c'è bisogno di magia :) –

Problemi correlati