No se puede solucionar el problema de los finales de línea en git

Mis compañeros de trabajo y yo siempre hemos tenido problemas con este tema. Está bastante bien documentado (algunos enlaces al final de la página), pero hasta ahora no he podido solucionarlo. Codificamos en c # utilizando Visual Studio 2013.

Cada vez que fusionamos dos twigs, tenemos muchos "cambios", en los que un file se reemplaza por uno idéntico. Por lo que pude leer en línea, estoy casi seguro de que se debe a un problema con los finales de línea.

La siguiente respuesta es la que más me ayudó. La primera vez que seguí los pasos, solo pude encontrar un único file para normalizar, es decir, el file .gitattributes. Pero luego reemplacé ese file por el siguiente file como primer paso, y se encontraron los files que esperaban ser normalizados. Todo esto fue hecho en mi sucursal local.

# Set the default behaviour, in case people don't have core.autocrlf set. * text=auto # Explicitly declare the text files you want to always be normalised and converted # to native line endings on checkout. *.cs text *.json text *.html text *.csproj text # Declare files that will always have CRLF line endings on checkout. *.sln text eol=crlf # Denote all files that are truly binary and should not be modified. *.png binary *.jpg binary *.gif binary 

Pasé por los siguientes pasos y tuve los posts esperados (a continuación) después de escribir el command: "git add -u"

post:

advertencia: CRLF será reemplazado por LF en (…)

Sin embargo, cuando cambié a la twig principal y la actualicé desde mi sucursal local, varios files fueron, una vez más, reemplazados. Intenté crear el mismo file .gitattributes en la twig principal y seguir los pasos otra vez, pero los files que se suponía que iban a normalizarse no se encontraron después del command "estado de git", y la fusión siempre se realizó como antes, reemplazando varios files por los idénticos.

¿Que estoy haciendo mal?

Hilo de desbordamiento de stack

Solución oficial de Github

El problema fue que no sincronicé (presioné) mi twig del código con el file gitattributes en el repository, solo lo comprometí. Como estaba trabajando localmente, pensé que era suficiente. Pero no lo era, y la fusión obtenía la versión anterior del código, sin el file gitattributes. Este problema fue muy ingenuo, pero dado que la documentation disponible que cité anteriormente no me ayudó, publicaré mi propio tutorial a continuación, que podría evitar que futuros github noobs cometan el mismo error. Mi tutorial se basa principalmente en este hilo .

Para este tutorial, supongamos la existencia de una twig activa y una twig principal. La idea es empujar el file gitattributes a la twig de trabajo, download el código para la twig principal y actualizar ese código con la twig de trabajo.

 # Add the following content to a file on the root of the repository in the # working branch, and name it .gitattributes ---------------------------------------------------------------------------- # Set the default behaviour, in case people don't have core.autocrlf set. * text=auto # Explicitly declare the text files you want to always be normalised and converted # to native line endings on checkout. *.cs text *.json text *.html text *.csproj text # Declare files that will always have CRLF line endings on checkout. *.sln text eol=crlf # Denote all files that are truly binary and should not be modified. *.png binary *.jpg binary *.gif binary ---------------------------------------------------------------------------- # From the root of the repository in the working branch remove everything from the index # (don't forget the '.') git rm --cached -r . # Re-add all the deleted files to the index # (You should get lots of messages like: # warning: CRLF will be replaced by LF in <file>.) git diff --cached --name-only -z | xargs -0 git add # Commit git commit -m "Fixed the line ending issue" # Sync the code # Switch to the master branch # Update (merge) from the working branch