Con Git, come posso disattivare l'avviso "LF sarà sostituito da CRLF"


154

Con Git, quando si utilizza il autocrlf = trueflag, viene comunque emesso un avviso quando si modificano i finali di linea.

Comprendo a cosa serve l'avviso e come disattivare il flag di fine riga, ma come posso disattivare l'avviso stesso?


Tutte le risposte qui sono obsolete - dopo che git ha introdotto gitattributes. Safecrlf è il tuo amico autocrlf no! Per favore, vedi la mia risposta
Rusi,

Risposte:


282

È possibile disattivare l'avviso con

git config --global core.safecrlf false

(Questo disattiverà solo l'avvertimento, non la funzione stessa.)


la disattivazione dell'avvertenza impedirà a git di sostituire lf con crlf? @chronial
aidonsnous,

3
@aidonsnous Da git docs : Se core.safecrlf è impostato su "true" o "warn", git verifica se la conversione è reversibile per l'impostazione corrente di core.autocrlf. Per "vero", git rifiuta conversioni irreversibili; per "avvertire", git stampa solo un avviso ma accetta una conversione irreversibile. Se non è necessario rifiutare conversioni irreversibili, l'impostazione di core.safecrlf su false elimina l'avviso, ma si converte comunque automaticamente.
Danny Libin,

5

Dovresti usare core.autocrlf inpute core.eol input. O semplicemente non lasciare che git cambi le estremità della linea con autocrlf falsee sbarazzati dell'evidenziazione di crlfs in diff, ecc core.whitespace cr-at-eol. Con .

Spero che questo ti aiuti


Di solito, vuoi che i tuoi script BAT finiscano e vengano confermati con CRLF e i tuoi script SH con LF.
Sandburg,

0

Stai cercando l' core.whitespaceopzione (vedi git config --helpper i dettagli).

È possibile impostare questa opzione in questo modo:

$ git config core.whitespace cr-at-eol

0

Ho usato in questo modo:

Salva i tuoi file correnti in Git, in modo da non perdere nulla del tuo lavoro.

git add . -u
git commit -m "Saving files before refreshing line endings"

Rimuovi tutti i file dall'indice di Git.

git rm --cached -r .

Riscrivi l'indice Git per raccogliere tutte le nuove terminazioni di riga.

git reset --hard

Aggiungi di nuovo tutti i file modificati e preparali per un commit. Questa è la tua occasione per verificare quali file sono rimasti invariati.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Apporta le modifiche al tuo repository.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/


13
Credo che l'OP stesse cercando di evitare di vedere più quegli avvertimenti. Non normalizzare tutti i finali di linea.
Mike Cluck,

git rm --cached -r . && git reset --hardsembra fare il trucco, grazie
Shanimal,

0

Stranamente, avevo applicato entrambe le configurazioni come spiegato qui, e il mio file .gitconfig conteneva queste 2 righe:

[core]
       autocrlf = false
       whitespace = cr-at-eol

Eppure ho ricevuto l'avvertimento. Ora solo per provare ho commentato entrambe le righe e l'avvertimento è effettivamente scomparso. Non ho idea del perché li abbia messi al primo posto comunque ...


0

L'impostazione "core.safecrlf false" funziona. Tuttavia, dopo aver modificato il valore su "true", l'output passa da "warning" a "fatal" come mostrato di seguito.

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$

In git recenti è meglio usare gitattributes di autocrlf. Vedere la mia risposta . Tutte le risposte (su questa q) sono vecchie e obsolete
Rusi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.