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 addguardarlos 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, entoncesstashpuede 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 checkoutsimplemente se negará a hacerlo.git addes 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 commitluego usa el contenido de esa área de preparación para crear confirmaciones.fuente