Estou tentando fazer com que o git não mude quaisquer terminações de linha para qualquer operação. Infelizmente, parece que não importa o quê. Eu o reduzi ao seguinte caso de teste, que tem tantos mecanismos diferentes para desativar esse comportamento quanto pude encontrar.
- Comece com duas máquinas (computador Windows = A, computador Linux = B)
- Em ambas as máquinas:
git config --global core.autocrlf false - Em ambas as máquinas:
git config --global core.eol crlf(apenas no caso)
- Faça um novo repositório em A. De uma pasta vazia:
git init --shared(em seguida, reexibir o.gitdiretório criado )- Faça um novo arquivo
.gitignoreno repositório - Faça um novo arquivo
.gitattributesno repositório com a única linha:* -text git add ., entãogit commit -m "initial commit"para contornar, por exemplo, isso .git branch master_recv- Adicionar controles remotos
- Faça um novo arquivo
document.txtno repositório contendo CRLF - Commit:,
git add -Aentãogit commit -m "<something>" - Observe que A's
document.txtainda contém CRLF (e excluí-lo e redefinir com--hardretorna a versão ainda com CRLF)
- SCP todo o diretório para o computador B
- Adicionar um novo arquivo
new filecontendo CRLF - Commit:,
git add -Aentãogit commit -m "<something>" - Observe que B's
document.txte B'snew fileainda contêm CRLF
- Puxe o mestre de B para A:
git pull <remote> master:master_recv - A's
document.txtmudou para LF. O arquivo adicionadonew filetambém contém LF.
O problema não ocorre se B for uma máquina Windows.


core.autocrlfsempre sido falso? Parece que você já tem\nterminações de linha em seu repositório? Não há configuração para alterar\nem seu repositório\r\nem seu diretório de trabalho.