¿Para qué sirve "git checkout -f" cuando "estado de git" muestra cambios de files rastreados en todas las sucursales

Tengo un file rastreado (un file versionado antiguo) que modifiqué en la twig principal. El estado en la twig maestra muestra este file como modificado, pero el estado en la twig de tema también muestra este file como modificado.

Anteriormente había un error "error: tiene cambios locales en" X "; no puede cambiar de twigs" cuando pago en la otra twig sin hacer un escondite o sin usar "-f" en git-checkout.

He comprobado "stackoverflow.com/questions/1304626/git-switch-branch-and-ignore-any-changes-without-committing", pero ese error no ocurre y puedo realizar el pago incluso cuando tengo cambios locales.

¿Hay algún tipo de configuration que está causando esta confusión?

Parece que la twig a la que está cambiando se encuentra en el mismo estado que la twig de la que proviene. Cada twig es un puntero en un tree de commits. Por lo tanto, si dos twigs apuntan al mismo set de confirmaciones , puede cambiar entre ellas sin verificar los cambios locales. El motivo es que hasta que no se realicen los cambios, no importa a qué twig se los haya encomendado. Sin embargo, una vez que ha confirmado el cambio, una twig la tiene y la otra no, y sus historias ahora son diferentes.

A less que se comprometa, los cambios modificados no son parte de ninguna twig, pero son aplicables a su directory de trabajo y el control de otra twig también traerá esos cambios a la otra twig (a less que haya conflictos).

Si no desea que los cambios que realizó mientras estaba en el maestro estén en otra sucursal cuando los revisa, puede confirmarlos o savelos.

tratar

git reset --hard HEAD 

en el maestro