2010-03-29 14 views

risposta

20

Dovresti poter vedere D con git reflog.

Vedere questo article for instance.

L'unica volta che i commit vengono effettivamente eliminati è se si git gc --prune (quindi fai attenzione a quello!).

Se si esegue git reflog in questo momento in un repository che hai lavorato in, vedrete un sacco di cambiamenti che sembrano qualcosa di simile:

c5c3a82... [email protected]{0}: pull origin featureB: Merge made by recursive. 
49d0608... [email protected]{1}: reset --hard HEAD^: updating HEAD 
3ed01b1... [email protected]{2}: pull origin featureA: Merge made by recursive. 
49d0608... [email protected]{3}: pull origin bugfixJ: Merge made by recursive. 
854d44e... [email protected]{4}: commit: Add more cowbell to foo.c 
6dbc22d... [email protected]{5}: pull origin bugfixI: Merge made by recursive. 
9bdb763... [email protected]{6}: commit: Remove weevils 
8518f9d... [email protected]{7}: checkout: moving from wickedfeature to master 

Queste linee possono essere rotti giù in 4 parti:

  • commettere hash,
  • commettere puntatore,
  • azione,
  • e informazioni extra.

Se volessimo tornare il commit che è stato perso a [email protected]{1}, potremmo semplicemente git reset --hard [email protected]{2}.
Ora il nostro ramo corrente (e la copia di lavoro) sono impostati sullo stato del repository prima del reset.

Se volessimo solo vedere che stato era, potremmo git checkout -b temp [email protected]{2} (o git checkout [email protected]{2} se avete git 1.5.0 e versioni successive).

+1

Questo mi ha letteralmente salvato la vita. – Nitroware

0

Ok, l'ho trovato.

È possibile utilizzare git reflog.

Non sapevo a cosa servisse, ma ora vedo che è un registro di tutti i riferimenti a cui HEAD ha fatto riferimento.

Problemi correlati