Git entiende el comportamiento de la twig de pago y la presencia y ausencia de files

La variación de esta pregunta ha sido formulada y respondida, pero todavía estoy perplejo mientras trabajo en mi path por el libro de Chacon.

He clonado mi repository de testing de github. Creé un file en este llamado afile.txt que escenario y confirmo. Creé un segundo file en este file llamado asecondfile.txt que no represento ni comprometo

Ahora ejecuto

$ git checkout -b testing Switched to a new branch 'testing' 

Cuando enumero los files, solo veo asecondfile.txt.

Hago un cambio en este file, no escenario o comprometo y ejecuto

 $ git checkout master 

Si cat sedcondfile.txt puedo ver los cambios que hice en la twig de testing.

 $ git checkout testing 

Preparo y confirmo los cambios en asecondfile.txt.

 $ git checkout master 

Enumero files que no veo aseconfile.txt.

Realmente desconcertado por este comportamiento y estaría contento de una explicación.

Cuando un file no se organiza ni se compromete, git no sabe nada al respecto. Tal path se llama "no rastreado". Git los deja solos, pero se lamenta de que no los "sigan" cuando ejecutas el git status . (Puedes callar las quejas, pero ignora eso hasta que llegues a .gitignore ).

Sin embargo, una vez que se organiza un file, deja de estar "sin seguimiento". Ahora es un file rastreado (y agregarlo a .gitignore no ayudará, ya está rastreado). Ahora que se ha rastreado, git sabe cómo eliminarlo al cambiar de una confirmación que lo tiene, como la confirmación que acaba de realizar en las testing a una confirmación que no lo hace.

Esto es lo que viste: git checkout master eliminó el file, porque está comprometido (y por lo tanto también en el área de índice / estadificación) cuando estás en una testing ramificación, y la confirmación que es la punta del master de twig no tiene esa file.

Una vez que git lo eliminó (al cambiar a master ), la ruta ya no está configurada ni comprometida, así que si creas un nuevo asecondfile.txt después de cambiar a master , ese es un file "sin seguimiento". Si luego le pides a git checkout testing , debería quejarse y fallar por defecto: tendría que eliminar tu file no rastreado, para replacelo con un file rastreado con (presumiblemente) contenido diferente.