Come tornare all'ultima impegnarsi nella storia dopo che ho usato ripristino git per andare a un vecchio changeset?

StackOverflow https://stackoverflow.com/questions/2540505

  •  23-09-2019
  •  | 
  •  

Domanda

Supponiamo che la mia storia va in questo modo:

A - B - C - D (master)

Se faccio git reset B, io ho:

A - B (master)

Il problema è che, git log ora mostrami solo la storia da A a B, e non riesco a vedere C e D più.

Come faccio a tornare a D?

È stato utile?

Soluzione

Si dovrebbe essere in grado di vedere D con git reflog .

href="http://gitfu.wordpress.com/2008/04/06/git-reflog-no-commits-left-behind/" per esempio .

  

L'unica volta commit vengono effettivamente cancellati è se si git gc --prune (in modo da stare attenti con quella!).

     

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

Queste linee possono essere suddivisi in 4 parti:

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

Se volessimo recuperare il commit che è stato perso a HEAD@{1}, potremmo semplicemente git reset --hard HEAD@{2}.
  Ora la nostra filiale di corrente (e copia di lavoro) sono impostati allo stato repository prima di noi il reset.

     

Se volessimo vedere solo ciò che stato era, potremmo git checkout -b temp HEAD@{2} (o git checkout HEAD@{2} se avete git 1.5.0 e successive).

Altri suggerimenti

Ok, l'ho trovato.

È possibile utilizzare git reflog.

Non sapevo cosa fosse per, ma ora posso vedere è un registro di tutti i riferimenti HEAD sono stati punta a.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top