Los archivos modificados en una rama de git se extienden a otra rama
Estoy trabajando en un repositorio git con una rama maestra y otra rama temática. Cambié a la rama de tema y modifiqué un archivo. Ahora, si cambié a la rama maestra, ese mismo archivo se muestra como modificado.
Por ejemplo:
estado de git en la rama git-build:
# On branch git-build
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: cvsup_current
#
Cambiar a la rama maestra
[root@redbull builder_scripts (git-build)]# git co master
M builder_scripts/cvsup_current
Switched to branch "master"
estado de git en la rama maestra
[root@redbull builder_scripts (master)]# git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: cvsup_current
#
¿Por qué el archivo se muestra como modificado en la rama master aunque se modificó en la rama git-build?
Entendí que las ramas son independientes entre sí y cuando cambio de una rama a otra, los cambios no se "desbordan" de una rama a otra. Entonces obviamente me estoy perdiendo algo aquí.
¿Alguien tiene una pista?
¿Por qué el archivo se muestra como modificado en la rama master aunque se modificó en la rama git-build?
La clave para recordar es que el archivo no fue modificado en la rama git-build. Sólo fue modificado en su copia de trabajo.
Solo cuando confirmas, los cambios se vuelven a colocar en cualquier rama que hayas retirado.
Si desea almacenar temporalmente sus cambios en una rama mientras trabaja en otra, puede usar el git stash
comando. Es una de las pequeñas y sorprendentes ventajas no reconocidas de usar git. Ejemplo de flujo de trabajo:
git stash #work saved
git checkout master
#edit files
git commit
git checkout git-build
git stash apply #restore earlier work
git stash
almacena una pila de cambios, por lo que puede almacenar de forma segura varios puntos de control. También puedes darles nombres/descripciones. Información de uso completa aquí .