2012-02-17 24 views
17

Hice una docena de compromisos en lo que pensé que era mi sucursal, luego revisé otra sucursal.Git/destacó HEAD, ¿recuperar trabajo?

Dispuesto a volver a mi rama inicial, no encontré mi código actualizado. Después de mirar mi historial en la consola, entendí que trabajaba en una sucursal separada ...

¿Es de alguna manera posible hacer el trabajo que he hecho en la sucursal separada?

Respuesta

23

Sí. Puedes usar el reflog Pruebe git log -g HEAD. Esto le mostrará el reflog para HEAD, es decir, cada confirmación que HEAD ha señalado, y la razón por la que cambió a esa confirmación. Debería poder encontrar su comando que comprobó la rama y ver cuál era la confirmación anterior.

También puede usar otra sintaxis para indexar en el reflog. Si acaba de realizar el git checkout branch, entonces [email protected]{1} se referirá a la confirmación del check-out anterior (para que pueda git checkout [email protected]{1} para volver al tema). O si sabe que hace 10 minutos HEAD estaba apuntando a lo correcto, puede usar git checkout [email protected]{10.minutes.ago}.

+2

muchas gracias, acabas de ahorrar 4 horas de trabajo ... – apneadiving

+0

@apneadiving: cualquier cosa que hayas cometido con git se puede recuperar más adelante. Tarda aproximadamente 1.5 meses antes de que un objeto de compromiso sin referencia sea en realidad basura recolectada (1 mes para que caiga fuera del reflog y otras 2 semanas antes de ser eliminado). En el peor de los casos, puedes encontrar estos objetos con 'git fsck --lost-found'. –

+0

ok gracias de nuevo por estos detalles. – apneadiving

9

Relax, todo está todavía allí :)

Sólo tiene que llamar

git reflog 

y git le dirá lo que se compromete HEAD señalado antes. Habrá una línea como

checkout: moving from c70e36e25ac2dbedde6cb376719381fe0ab53f19 to master 

indicándole el SHA1 de la punta de sus confirmaciones con una cabeza separada. Crear una nueva rama que apunta a que la punta usando

git branch saved-commits c70e36e25ac2dbedde6cb376719381fe0ab53f19 

Ahora se puede rebasar esa rama en la parte superior de la rama se suponía que los compromete a donde ir.

+0

Muchas gracias también, es muy valioso tener respuestas complementarias. – apneadiving

Cuestiones relacionadas