2010-02-01 11 views
6

Había revisado un viejo hash (commit) y estaba trabajando en él, registrándome alegremente e ignorando las advertencias de que no estaba trabajando en una sucursal. Luego me cambié a una sucursal y me di cuenta de que tenía , no había forma de volver a mis registros huérfanos (afortunadamente tenía la ventana de la terminal abierta, así que la revisé y la ramifiqué).Susto de mi vida con GIT: ¡No tengo rama!

¿Cómo puedo hacer que GIT me diga los nombres de las confirmaciones que NO pertenecen a una sucursal? O simplemente todos los commits, si eso no es posible ...

+0

"registrando alegremente e ignorando las advertencias". Bueno, eso demuestra: puedes ignorar las advertencias, pero debes saber lo que estás haciendo :-). – sleske

+0

1.5 años después, leyendo la pregunta y las respuestas, no creo que vaya a mostrar eso en absoluto, pero tal vez todo lo contrario: con el tiempo todo estará claro. –

Respuesta

2

Ver this question que tiene una gran explicación de cómo encontrar alijos que ha caído. Puedes ver confirmaciones colgantes, etc. de la misma manera.

+0

Hombre que es increíble. No utilizo el alijo todavía, pero abre la puerta. Gracias John. –

+2

Oh hombre, nunca pararás una vez que lo aprendas. Los cambios de almacenamiento para probarlos en diferentes ramas, para probar fusiones, para cambiar entre tres versiones diferentes de un cambio, para deshacerse de la mitad de su cambio sin perder la otra mitad para siempre ... –

+0

nunca vio su comentario aquí porque no tenía @ yar en él:) ... de todos modos, sí, todavía estoy aprendiendo cosas nuevas en GIT diariamente –

2

Puede pescarlos en el reflog, que almacena los commits que ha revisado.

git reflog imprimirá las confirmaciones más recientes señaladas por HEAD, que es su copia de trabajo.

También puede obtener una lista de todos los objetos en su árbol que son inalcanzables desde sus ramas actuales usando git fsck.

+0

Excelente, git fsck es interesante, ni siquiera había oído hablar de eso. –

8

git reflog mostrará el registro de las referencias creadas por la actividad reciente que ha realizado. Para referencia futura, git checkout de una confirmación lo pone en un detached head. Si desea basar el trabajo en un compromiso anterior, debe crear una bifurcación de ese compromiso en su lugar.

git checkout -b newbranch oldsha1 

o

git branch newbranch oldsha1 
git checkout newbranch 
+0

Gracias! De hecho, así es como volví, pero sin 'git reflog' fue solo suerte –

Cuestiones relacionadas