2010-02-06 16 views
35

Hola, soy nuevo en git y necesito deshacer un tirón, ¿alguien puede ayudar?!? Así que lo que he hecho es ...Deshacer un git pull --rebase

  1. git commit
  2. git alijo
  3. git pull --rebase
  4. git alijo pop

esto creó un montón de conflictos y salió un poco mal Ahora, al hacer 'lista de git stash', revela que mi alijo sigue ahí. ¿Es posible revertir mi repo al punto justo después de hacer commit de git? Entonces, efectivamente, mi informe solo contiene los cambios que he realizado y nada nuevo del servidor.

Respuesta

37

usando git reflog verá una lista de CABEZA compromete señalado en el pasado

usando

git checkout -b after-commit [email protected]{1} # or the commit you want to recover 

se crea una nueva rama en esa posición precisa y comprobar que funciona

+0

haciendo esto arroja un error informándome que un archivo se sobrescribirá mediante fusión. ¿Hay alguna manera de ignorar esto? – Thomas

+4

Asegúrate de que tu directorio de trabajo esté limpio (git reset --hard HEAD lo hará). Además, asegúrese de que la rebase ya no esté en progreso (git rebase --abort). –

+0

¡Mi amigo es un salvavidas! Gracias :) – Thomas

-1

Uso git log -g y encontrar el índice de cometer desea volver a la acaba de hacer git checkout índice

+0

Esto realmente no ayuda, ya que 'pull --rebase' reproduce tus commits además de lo que acabas de sacar; en este caso, no puedes simplemente verificar tu antigua confirmación, ya que está en la parte superior de las confirmaciones que acabas de sacar. –

71

en realidad, para hacer º es más fácil Git mantiene una referencia llamada ORIG_HEAD que apunta a dónde estabas antes de la rebase. Por lo tanto, es tan fácil como:

git reset --hard ORIG_HEAD 
+4

Casi perdí una semana de trabajo, pero esto lo resucitó. Eso es lo que sucede cuando alguien más modifica su bifurcación y fuerza empuja hacia su origen sin hacer primero sus cambios ... Esto definitivamente es importante saber si usted trabaja en cualquier proyecto con otros en el que obliguen a todos a volver a basar en lugar de fusionarse. Atornille un historial de limpieza, el rebase es peligroso. – Gavin

4

Usted debe pago y envío del comando

git reset --merge 

que elimina la necesidad de un git commit; git stash before a pull (no sé sobre rebase)

El comando devuelve un espacio de trabajo con cambios no confirmados en el estado antes de un tirón en conflicto.