Sto cercando di convincere git a non cambiare alcuna fine di riga per nessuna operazione. Sfortunatamente, sembra che sia così non importa cosa. L'ho ridotto al seguente test case, che ha tanti meccanismi diversi per disabilitare questo comportamento come ho potuto trovare.
- Inizia con due macchine (computer Windows = A, computer Linux = B)
- Su entrambe le macchine:
git config --global core.autocrlf false - Su entrambe le macchine:
git config --global core.eol crlf(per ogni evenienza)
- Crea un nuovo repository su A. Da una cartella vuota:
git init --shared(quindi mostra la.gitdirectory creata )- Crea un nuovo file
.gitignorenel repository - Crea un nuovo file
.gitattributesnel repository con la singola riga:* -text git add ., quindigit commit -m "initial commit"per aggirare, ad esempio questo .git branch master_recv- Aggiungi telecomandi
- Crea un nuovo file
document.txtnel repository contenente CRLF - Impegnati:,
git add -Aalloragit commit -m "<something>" - Nota che A
document.txtcontiene ancora CRLF (e cancellandolo e ripristinandolo con--hardrestituisce la versione ancora con CRLF)
- SCP l'intera directory sul computer B
- Aggiungi un nuovo file
new filecontenente CRLF - Impegnati:,
git add -Aalloragit commit -m "<something>" - Notare che B
document.txte Bnew filecontengono entrambi CRLF
- Porta il master di B su A:
git pull <remote> master:master_recv - A's
document.txtè cambiato in LF. Il file aggiuntonew filecontiene anche LF.
Il problema non si verifica se B è una macchina Windows.


core.autocrlfsempre stato falso? Sembra che tu abbia già delle\nterminazioni di riga nel tuo repository? Non v'è alcuna impostazione per modificare\nnel vostro repository per\r\nnella directory di lavoro.