La sucursal de Git no está funcionando como esperaba

De acuerdo, soy nuevo en el uso de git … y pensé que entendía el concepto de ramificación, pero ahora estoy confundido.

Digamos que tengo un maestro.

Creo una twig llamada branch1.

git checkout -b branch1 master *branch1 

Hice algunos cambios en branch1, pero me di count de que tenía que hacer algo más antes de terminar mi trabajo en branch1.

Así que vuelvo a dominar

 git checkout master *master branch1 

y crea una nueva twig llamada branch2.

git checkout -b branch2

 master branch1 *branch2 

Como no comprometí mis cambios en branch1, espero que mi branch2 no tenga códigos branch1 … pero estoy viendo los cambios realizados desde branch1.

¿Estoy malentendiendo algo?

Aunque estaba en la twig1 cuando realizó los cambios, esos cambios no están realmente "en" la twig1 hasta que los confirma.

Desde $ git help checkout :

Se guardan las modificaciones locales a los files en el tree de trabajo, de modo que puedan comprometerse con la <twig>.

Si, por otro lado, compromete sus cambios a branch1 antes de volver a master, entonces cuando $ git checkout master , git revertirá los files en su directory de trabajo a la instantánea a la que apunta el maestro, como está esperando.

Si por alguna razón quieres evitar comprometer tus cambios a branch1, pero aún trabajar en una twig diferente sin esos cambios, podrías considerar usar $ git stash para esconder tus cambios, luego cambiar a tu nueva sucursal y hacer el trabajo que necesitas a, luego vuelva a cambiar a branch1 y haga $ git stash pop para recuperar sus cambios escondidos.

Como no comprometí mis cambios en branch1, espero que mi branch2 no tenga códigos branch1

Copia de trabajo (cambios escalonados + sin escena) es el mismo para todas las twigs. Y lo que ves no son los cambios en la twig1, pero la copy de trabajo cambia.

Una vez que confirme sus cambios en la twig1, ya no los verá en la twig2 ni en ninguna otra twig.