2011-06-23 18 views
64

Estaba cambiando el código en git, tuve algunos conflictos de fusión. Resolví los conflictos e hice "git add". En este punto me olvidé de hacer "git rebase --continuar". Continué con la codificación e hice un "commit git" para los cambios. Ahora estoy en "sin rama" y no puedo hacer "git rebase --continuar" ahora. ¿Cómo puedo solucionar esto?Se olvidó de "git rebase --continuar" e hizo "git commit". ¿Como arreglar?

+1

¿Qué dice 'git status'? – hvgotcodes

+0

# No está actualmente en ninguna sucursal. nada que confirmar (directorio de trabajo limpio) – Abhilash

Respuesta

17

Tendría que probarlo, pero creo que esto es lo que haría:

  1. Tag tu último commit (o simplemente escriba su SHA1 algún lugar para que no se pierda): git tag temp
  2. git rebase --abort
  3. Haga la rebase nuevamente. Tendrás que resolver la fusión nuevamente. :(
  4. git rebase --continue
  5. git cherry-pick temp

El problema con esto es que su temp cometer probablemente contiene tanto la resolución de la fusión, y el nuevo código. Por lo tanto, podría ser difícil, pero me gustaría probar y ver si funciona.

+0

O bien puede etiquetar como dice @MatrixFrog o puede guardarlo también como un parche. Luego haz la rebase abortar. Verifique el estado para asegurarse de que el repositorio esté en un estado que sabe que no tuvo problemas y luego inicie la búsqueda y la rebase. – yasouser

+6

No hagas esto. Vea la respuesta de kirikaza a continuación para una forma mucho más simple/limpia. No te metas con la elección selectiva y la resolución de conflictos por segunda vez. – tandrewnichols

+3

@Abhilash Por favor, acepte la respuesta de kirikaza. Yo (al igual que tandrewnichols) hice esto y había una manera mucho más sencilla (y Internet parece estar de acuerdo, ya que esa respuesta tiene 4x los votos a favor). –

125

Just do git reset --soft HEAD^. se mueve el puntero de cabecera a su padre, pero mantiene el árbol de trabajo y añade el cambio de combinación con el índice. Así se puede continuar con rebase git rebase --continue como antes.

+0

Esto funcionó por completo, y también fue la primera vez que encontré un uso para --oft. Es bueno saber cómo funciona, ¡gracias! – mmocny

+0

esto es increíble !! –

+9

Esta es la respuesta correcta chicos –