2011-11-25 6 views
5

hice una salida a una anterior comprometo:"no está actualmente en cualquiera de las ramas" después de hacer un commit

git checkout 12345 

Luego de vuelta a la última confirmación:

git checkout 56789 

y luego continuó cometiendo y yo 'm:

No está actualmente en ninguna rama.

Tal vez, que debería haber hecho:

git checkout master 

Después de la primera salida, en lugar de apuntar a un identificador de comprometerse.

Aún así, ¿alguna idea de cómo obtener mis últimos commits en la rama master (que se queda atrás unos cuantos commits)?

Gracias

Respuesta

10

Cuando haga git checkout 12345, no estará en ningún estado de sucursal. No hagas eso. Esto está destinado a la inspección de compromiso en lugar de trabajar en él.

Si usted está en amo y desea restablecer su maestro al que quería comprometerse, utilice git reset 12345 (o suministrar --hard) Si quieres rama, utilizar git checkout -b <name> <sha1> para crear una sucursal en ese punto y empezar a trabajar allí.

Del mismo modo, mientras que volver, como usted ha mencionado, que debería haber hecho git checkout master

Ahora que ya ha comprometido más de 56.789, anotar la confirmación más de 56.789, y el maestro entonces la salida, y hacer:

git reset <commit_over_56789> 
+0

Su respuesta es más informativa. Gracias :-) –

+0

+1. 'Git Checkout Master' era todo lo que necesitaba. –

4

Si he entendido bien, su rama principal está detrás de su compromiso (56789) más reciente, y que le gustaría hacer que apunte a eso.

Si ese es el caso, haciendo:

git branch -f master 56789 

restablecerá la rama principal para apuntar a esa confirmación. git checkout master después de eso, y deberías estar listo para ir.

+0

Uno también puede simplemente 'git checkout master && git rebase 56789', suponiendo que la copia de trabajo está limpia. – Romain

+0

Perfecto. Muchas gracias, Mat y Romain! –

+0

Muchas gracias, funcionó para mí. Personalmente encuentro esta respuesta más útil que la otra. –

Cuestiones relacionadas