ver remota rama modificados example cambiar archivos git git-branch

remota - Los archivos modificados en una rama git se están extendiendo a otra rama



git push example (5)

Estoy trabajando en un repositorio git con una rama principal y otra rama temática. He cambiado a la rama de tema y he modificado un archivo. Ahora, si cambio a la rama maestra ese mismo archivo se muestra como modificado.

Por ejemplo:

estado de git en la rama de git-build:

# On branch git-build # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: cvsup_current #

Cambiar a la rama principal

[root@redbull builder_scripts (git-build)]# git co master M builder_scripts/cvsup_current Switched to branch "master"

estado de git en la rama principal

[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 principal a pesar de que se modificó en la rama git-build?

Según entiendo, las ramas son independientes entre sí y cuando cambio de una rama a otra, los cambios no se "expanden" de una rama a otra. Así que obviamente me falta algo aquí.

Alguien tiene una pista de palo?


Este es el comportamiento predeterminado de git.

Puede usar la opción -f para finalizar la compra y hacer una "comprobación limpia" si lo desea.


Los archivos modificados no se colocan en el repositorio hasta que los agregue y los comprometa. Si vuelve a la rama de tema y confirma el archivo, no aparecerá en la rama principal.


Si desea almacenar temporalmente sus cambios en una rama mientras se va a trabajar en otra, puede usar el comando git stash . Es una de las increíbles ventajas poco conocidas de usar git. Flujo de trabajo de ejemplo

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 con seguridad varios puntos de control. También puede darles nombres / descripciones. Información de uso completo aquí .


¿Por qué el archivo se muestra como modificado en la rama principal a pesar de que se modificó en la rama git-build?

La clave para recordar es que el archivo no se modificó en la rama git-build. Solo fue modificado en tu copia de trabajo.

Solo cuando se compromete, los cambios se vuelven a colocar en la rama que haya prestado.


  • No es que las ramas de git dependan unas de otras, pero tampoco tienen una base de código completa por separado para cada rama.
  • Para cada confirmación, Git almacena un objeto que contiene un puntero a los cambios. Por lo tanto, cada rama apunta a su última confirmación y apunta a la rama en la que se encuentra actualmente.
  • Cuando cambias la rama, el puntero HEAD apunta a esa confirmación particular de la rama. Entonces, si hay archivos modificados, el comportamiento predeterminado es copiarlos.

Puede hacer lo siguiente para superar este problema.

  1. Utilice la opción -f para ignorar los cambios.

Si desea guardar los cambios:

  1. Confirme los cambios localmente en la misma rama y luego cambie la rama.
  2. Use git stash , cambie la rama, haga su trabajo, vuelva a la rama original y git stash apply .