Estoy tratando de hacer que git no cambie ningún final de línea para ninguna operación. Desafortunadamente, parece que no importa qué. Lo he reducido al siguiente caso de prueba, que tiene tantos mecanismos diferentes para deshabilitar este comportamiento como pude encontrar.
- Comience con dos máquinas (computadora con Windows = A, computadora con Linux = B)
- En ambas máquinas:
git config --global core.autocrlf false - En ambas máquinas:
git config --global core.eol crlf(por si acaso)
- Cree un nuevo repositorio en A. Desde una carpeta vacía:
git init --shared(luego muestre el.gitdirectorio creado )- Crea un nuevo archivo
.gitignoreen el repositorio - Cree un nuevo archivo
.gitattributesen el repositorio con una sola línea:* -text git add ., luegogit commit -m "initial commit"para solucionarlo, por ejemplo, esto .git branch master_recv- Agregar controles remotos
- Cree un nuevo archivo
document.txten el repositorio que contenga CRLF - Comprometerse:,
git add -Aluegogit commit -m "<something>" - Tenga en cuenta que A
document.txttodavía contiene CRLF (y eliminarlo y restablecer con--harddevuelve la versión todavía con CRLF)
- SCP todo el directorio a la computadora B
- Agregar un nuevo archivo que
new filecontenga CRLF - Comprometerse:,
git add -Aluegogit commit -m "<something>" - Tenga en cuenta que B
document.txty Bnew filetodavía contienen CRLF
- Lleva el maestro de B a A:
git pull <remote> master:master_recv - A
document.txtha cambiado a LF. El archivo agregadonew filetambién contiene LF.
El problema no ocurre si B es una máquina con Windows.


core.autocrlfSiempre ha sido falso? ¿Parece que ya tienes\nfinales de línea en tu repositorio? No hay ninguna configuración para cambiar\nen su repositorio\r\nen su directorio de trabajo.