tutorial gui español descargar commands comandos git

gui - git repository



Deshacer git stash pop que resulta en conflicto de fusión (2)

Comencé a hacer cambios en mi código base, sin darme cuenta de que estaba en una rama de tema anterior. Para transferirlos, quise guardarlos y luego aplicarlos a una nueva rama del maestro. git stash pop para transferir los cambios en curso a esta nueva sucursal, olvidando que no había introducido nuevos cambios en el master antes de crear la nueva sucursal. Esto resultó en un montón de conflictos de fusión y la pérdida de un escondite limpio de mis cambios (desde que usé pop).

Una vez que recreo la nueva rama correctamente, ¿cómo puedo recuperar mis cambios ocultos para aplicarlos correctamente?


¡Afortunadamente, el git stash pop no cambia el stash en caso de conflicto!

Entonces, nada de qué preocuparse, simplemente limpie su código y vuelva a intentarlo.

Digamos que su código base estaba limpio antes, podría volver a ese estado con: git checkout -f
Luego haz lo que olvidaste, por ejemplo, git merge missing-branch
Después de eso simplemente dispara git stash pop otra vez y obtienes el mismo alijo, que estaba en conflicto antes.

Atención: el alijo se guarda, sin embargo, los cambios no confirmados en el directorio de trabajo no lo son. Se pueden ensuciar.


Resulta que, Git es lo suficientemente inteligente como para no dejar caer un escondite si no se aplica limpiamente. Pude llegar al estado deseado con los siguientes pasos:

  1. Para separar los conflictos de fusión: git reset HEAD .
  2. Para guardar la fusión en conflicto (por si acaso): git stash
  3. Para volver al master: git checkout master
  4. Para sacar los últimos cambios: git fetch upstream; git merge upstream/master git fetch upstream; git merge upstream/master
  5. Para corregir mi nueva rama: git checkout new-branch; git rebase master git checkout new-branch; git rebase master
  6. Para aplicar los cambios ocultos correctos (ahora segundo en la pila): git stash apply stash@{1}