¿Por qué cambiar las twigs resulta en cambios sin compromiso?

Tengo una situación realmente extraña … puede ser porque soy relativamente nuevo en git, pero parece equivocado. Cada vez que cambio twigs desde la línea de command, obtengo un set de cambios no confirmados (diferentes según qué twig comprobe).

Estoy trabajando con un repository de Stash ("Stash" el repository de Git, como un GitHub privado, no como "git stash" el command). Este repository tiene múltiples twigs: master / development / feature1, etc.

Para ser claro, no hice ningún cambio en ninguna twig … Soy un nuevo usuario que se conecta a un nuevo cliente, recién instalado. Solo estoy navegando por las sucursales y asegurándome de que cada twig se construya en mi sistema.

Aquí están los commands que utilicé:

git branch -a 

Esto enumera todas las twigs e inicialmente mostré que tengo "maestro" localmente y otras twigs remotas.

Luego revisé la twig de desarrollo

 git checkout -b development origin/development git status 

Esto me muestra que ahora tengo unos 20 cambios no confirmados, incluidos algunos files fuente, files de proyecto y algunos files de datos misceláneos. ¿Por qué? ¿Es este comportamiento normal de git?

Intento volver a dominar:

 git checkout master 

Pero esto falla debido a cambios no confirmados. Si lo forzo:

 git checkout master -f 

parece funcionar bien y estoy de vuelta en la twig principal sin cambios no confirmados.

¿¡¿De Verdad?!? Los cambios no confirmados no son ni siquiera las diferencias entre la twig … solo un subset. ¿Qué puede explicar este comportamiento? ¿Y cómo puedo detenerlo?

FYI, ejecutando la versión de git 1.8.3.msysgit.0 en Windows 7

Estoy casi 100% seguro de que esto está relacionado con el clásico problema de las terminaciones de línea Windows vs. Linux / Mac, es decir, el hecho de que cuando presionas la tecla "Enter" en Windows, obtienes un personaje / set de caracteres diferente que cuando presionas "Enter" en Linux o Mac. (Si tiene curiosidad, aquí hay información sobre ese problema)

Para saber con certeza si este es su problema, ejecute un git diff . Si el resultado muestra que las líneas eliminadas tienen el mismo contenido (o "se ven iguales") que las líneas agregadas, entonces es probable que sea un problema de espacio en blanco.

Git conoce este problema y administrará los finales de línea para ti … si se lo dices. Intenta cambiar tu opción autocrlf :

 git config --global core.autocrlf true 

Y mira si el problema persiste.

Es posible que aún necesite volver a normalizar el repository para estas diferencias. Si es así, GitHub tiene un excelente artículo sobre esto . Consulte la sección inferior para get detalles sobre la re-normalización.

(Ah, y en caso de que esté lejos de aquí, actualice su pregunta con ejemplos de lo que encontró en git diff , y podemos usar eso para resolver esto).