Soy realmente nuevo en git y he estado tratando de entender por qué git sigue mostrando todo lo que cambié en una rama en otra rama cuando ejecuto git checkout para cambiar entre ramas Primero intenté no usar git add y no funcionó. Sin embargo, intenté usar git add, pero no solucioné el problema. Todavía no estoy usando git commit.
Esto es básicamente lo que estoy haciendo:
$ git clone <a_repository>
$ git branch
* master
$ git branch testing
$ git checkout testing
...edit a file, add a new one, delete...
$ git status
# On branch testing
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git branch
master
* testing
$ git checkout master
D file1.txt
Switched to branch 'master'
$ git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
Pensé que, al usar ramas, cualquier cosa que hagas en una rama, es invisible para todas las otras ramas. ¿No es esa la razón de crear sucursales?
Intenté usar "git add" pero los cambios son visibles en ambas ramas. ¿Necesito ejecutar "git commit" antes de cambiar entre ramas para evitar esto?
git add
guardarlos antes de guardarlos. Dicho esto, no estoy seguro de que realmente quiera guardarlos aquí; si tiene la intención de que esos cambios formen parte de la rama de la que se está alejando, confíelos. (Si tiene la intención de volver a esa rama y trabajar más en los cambios antes de confirmarlos, entoncesstash
puede ser la herramienta adecuada para el trabajo).Respuesta corta: sí, necesitas comprometerte. ¡Asegúrate de hacerlo en la rama correcta!
Una rama es un puntero a una confirmación. Cuando confirma con una rama extraída, la rama avanza para apuntar a esa nueva confirmación. Cuando revisa una rama, está revisando la confirmación a la que apunta. (Puede pensar en las confirmaciones como instantáneas de su árbol de trabajo).
Entonces, si tiene cambios que no ha comprometido, no se verán afectados por el cambio de sucursales. Por supuesto, si cambiar de rama es incompatible con sus cambios,
git checkout
simplemente se negará a hacerlo.git add
es un comando para organizar cambios, que luego confirmará. No registra esos cambios en el historial del repositorio. Simplemente los coloca en un área de preparación (el índice);git commit
luego usa el contenido de esa área de preparación para crear confirmaciones.fuente