Terminaciones de línea con cygwin y Github para Windows

Quiero poder trabajar en mis proyectos de git usando tanto la aplicación Github para Windows como git en la línea de command usando Cygwin (en Windows).

Pero sigo teniendo problemas con los finales de línea cuando cambio de uno a otro.

Si con la herramienta de línea de command el repository no tiene cambios, querrá modificar todos los files con la aplicación Github. Si realizo los cambios con la aplicación Github, querrá cambiarla con la herramienta de command-line.

Después de una buena cantidad de testings, no pude hacer que funcione para ambas herramientas.

¿Qué lo haría funcionar? En los .gitatributes que actualmente tengo establecidos: * text = auto Pero no ayuda

Este es un error de GHfW que ocurre cuando la configuration de su repository y los datos en su repository no constringn.

Si configura un file para traducir a terminaciones de línea CRLF, por ejemplo, estableciendo core.autocrlf en true , pero tiene blobs en su repository que ya están en formatting CRLF (probablemente porque alguien no ha configurado core.autocrlf en true ) entonces este problema puede ocurrir.

En este caso, GHfW traduce los CRLF en el repository de forma diferente que msysgit. Como resultado, algunos o todos los files parecían sucios.

Recomendaría un enfoque coherente para su CRLF en todo su equipo para evitar cualquier ambigüedad por parte de las herramientas de git en cuanto a lo que deberían hacer con sus terminaciones de línea. Dicho esto, este error recientemente se corrigió en libgit2, la biblioteca que subyace a GHfW, y debería abrirse path en GHfW pronto.

Trabajar tanto con Git Bash como con Cygwin en Windows va a hacer que Git confunda. Es decir:

  • clone / checkout un repository bajo Git Bash. Durante el check-out, git piensa que está en Windows, por lo que usualmente usa CRLF para revisar files de text.
  • ejecuta git en Cygwin, git piensa que está en Linux y que el repository se ha revisado en Linux (que en realidad no es, de acuerdo con el paso anterior). Por lo tanto, cuando git ve CRLF en Cygwin, cree que LF se modifica en CRLF para que git informe un montón de cambios de files.

Una forma de arreglar esto es crear .gitattributes file .gitattributes en la raíz del repository y agregar líneas como las siguientes:

 *.txt text eol=lf 

Le dice a git cuando encuentra el file con el sufijo .txt , usa LF tanto al escribir en "database (.git)" como en el directory de trabajo.

reference aquí

He clonado un repository (con files con CRLF) en mis windows usando GitHub 2.7.0.24. Luego quise usar la versión de mi cygwin's git 2.1.4.

Edité .git / config agregando "autocrlf = true" en la sección [core]. (Con una tabulación real antes de "autocrlf = true")

Ahora el idiota de cygwin dice que estoy actualizado sin modificaciones.

Guardo el CRLF en los files porque fueron creados de esa manera en el repository original.

Ya no usaré la aplicación GitHub …

Noté que los conflictos de fusión están agregando líneas <<<< ==== >>>> sin CR, pero se eliminarán cuando resuelva los conflictos.