¿Los cambios de git stash se aplican a la nueva rama?
Estaba trabajando en la rama maestra, hice algunos cambios y luego los guardé. Ahora mi maestro está en HEAD.
Pero ahora quiero recuperar estos cambios, pero en una nueva rama que se bifurca desde la versión HEAD de la rama maestra.
Cómo hago esto ?
El procedimiento habitual y estándar es:
- hacer cambios
git stash save
git branch xxx HEAD
git checkout xxx
git stash pop
Corta:
- hacer cambios
git stash
git checkout -b xxx
git stash pop
Como ya has guardado tus cambios, todo lo que necesitas es esta frase:
git stash branch <branchname> [<stash>]
De los documentos ( https://www.kernel.org/pub/software/scm/git/docs/git-stash.html ):
Crea y verifica una nueva rama llamada < nombre de rama > a partir de la confirmación en la que se creó originalmente < stash >, aplica los cambios registrados en < stash > al nuevo árbol de trabajo e índice. Si esto tiene éxito, y < stash > es una referencia con el formato stash@{< revisión >}, entonces descarta el < stash >. Cuando no se proporciona ningún <stash> , se aplica el último.
Esto es útil si la rama en la que ejecutó git stash save ha cambiado lo suficiente como para que git stash apply falle debido a conflictos. Dado que el alijo se aplica encima de la confirmación que era HEAD en el momento en que se ejecutó git stash, restaura el estado originalmente escondido sin conflictos.
Si tiene algunos cambios en su espacio de trabajo y desea guardarlos en una nueva rama, use este comando:
git stash branch branchName
Esto lo hara:
- una nueva rama (a partir de la confirmación en la que se creó originalmente el alijo)
- mover cambios a esta rama
- y eliminar el último alijo (como: git stash pop)
Después de ejecutar este comando, querrá realizar git add
los cambios y confirmarlos.