2012-05-31 12 views
7

Soy nuevo en git y github y tengo algunos problemas.Deshacer "retroceder a este compromiso"

Estoy usando github for windows para administrar un pequeño proyecto que tengo. Creo que he perdido algunos cambios que recientemente le hice a mi código. Lo que hice fue:

  1. Cambié algunos archivos.
  2. Accidentalmente cometió los cambios.
  3. Revertido el compromiso.
  4. Luego presioné "retroceder a este compromiso".

Ahora todos los cambios se han ido, incluidos algunos archivos nuevos que he agregado. ¿Puedo guardarlos? También instalé git (línea de comando) para poder ejecutar cualquier comando que piense que ayudará.

Respuesta

7

Una de las cosas buenas de git es que es REALMENTE difícil perder algo, a menos que estés haciendo algo extraño.

Lo que necesita hacer es encontrar el punto que representa el estado en el que desea estar.

Digamos que examina el registro de git y determina que el hash 01dbc4 ... es el momento en el que desea regresar. Para ello, basta con hacer:

git reset --hard 01dbc4 

Tenga en cuenta que si usted tiene cambios no confirmados, necesitará para guardar primero.

Ahora, si a esa confirmación le faltan los archivos adicionales que desea y están en una confirmación posterior, se vuelve un poco más complicado. Pero lo que puede hacer es establecer su rama maestra en el punto desde el que desea comenzar, y luego establecer una rama hasta el punto que tiene los nuevos archivos. A continuación, puede copiar o combinar selectivamente la información que falta de la nueva bifurcación en su rama principal, haciendo que su rama principal tenga el aspecto que desee.

Tenga en cuenta que incluso si mueve el puntero de una rama como cuando usa el restablecimiento de git --hard above and huérfano commits más tarde--, los recupera examinando git reflog y restableciéndolos, o creando una rama que los señale.

+0

muchas gracias! funcionó perfectamente! – nautilus7

+0

En mi caso, el registro de git no mostraba las confirmaciones destruidas. – Bulwersator

5

Tenga en cuenta que ahora (marzo de 2013), con GitHub para Windows, puede deshacer una confirmación sin tener que escribir cualquier comando git:

Ver "Undo Button in GitHub for Windows"

hemos añadido Deshacer apoyo a los descartes, se compromete, Rollbacks, y se funde:

Undo button

+0

¿Puedes proporcionar instrucciones de texto paso a paso para GitHub para Windows alrededor del 10 de mayo de 2014? ¿Qué retrocede a un compromiso determinado? Gracias – Dave

+0

@Dave quieres decir, ya no hay un menú contextual en una entrada (como se muestra en la imagen) con una entrada "descartar cambios"? – VonC

+0

No está claro si 'descartar cambios' descarta todos los cambios realizados de ahora en adelante, o SÓLO los cambios realizados en ESA revisión. Si el primero está destinado, debe llamarse 'deshacer' o 'descartar todos los cambios de esta revisión, o algo así."Por supuesto, más de un año después, ¿tal vez está arreglado? – Dave