2011-12-28 10 views
40

Sono nuovo di git e ho bisogno di aiuto. Sto usando msysgit su Windows.Git, aggiungere file al repository dà un errore fatale per LF -> CRLF

Quando eseguire il comando git add [folderName] ottengo la risposta:

fatal: LF would be replaced by CRLF in [.css file or .js file] 

e quindi se si tenta di fare un commit non succede nulla.

$ git commit 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  so01/ 
nothing added to commit but untracked files present (use "git add" to track) 

Alcuni di questi file css/js sono stati scaricati dalla rete quindi credo che il motivo per cui l'hanno LF. Se apro il file e taglia/incolla il contenuto, allora ottengo l'errore sul file successivo e così via.

Qualsiasi aiuto sarà molto apprezzato.

Modifica

Impostazione core.autocrlf false sembra risolvere il problema, ma ho letto su molti post di non impostare questa opzione a false.

Qualcuno può indicarmi dove posso scoprire quali problemi possono sorgere in questa situazione?

+0

Stai lavorando con gli altri che si trovano su un ambiente non Windows? –

+2

No. Sto lavorando su una piccola app che inserirò in appharbor. Finora tutto è andato bene, ma volevo sapere qual è la differenza in queste opzioni. Dopo aver terminato l'app, ho intenzione di fare qualche sforzo, ma nel frattempo ho intenzione di usare SO per una soluzione rapida. – user619656

+0

Quindi un motivo in più per impostare autocrlf su false. Non hai bisogno del mal di testa. Hanno i file impegnati come sono. Peccato che le impostazioni predefinite durante l'installazione di msysgit prendano l'opzione peggiore. –

risposta

22

Fidati degli editor di codice per manipolare le terminazioni di linea. Auto crlf dovrebbe essere falso. Non lasciare che il controllo del codice sorgente diventi troppo intelligente. Se non è necessario avere lo strumento di controllo del codice sorgente per modificare le terminazioni di linea, non farlo. Questo farà male.

Per ripetere da una risposta accettata: "A meno che non si possa vedere un trattamento specifico che deve occuparsi di eol nativo, è meglio lasciare autocrlf su false".

anche dal libro progit alla fine della sezione relativa autocrlf:

"Se sei un programmatore di Windows facendo un solo per Windows progetto, allora è possibile disattivare questa funzionalità, registrando il carrello ritorna a il repository impostando il valore di configurazione per false"

l'unico altro aiuto che posso dare è che se si prende l'altro itinerario, acquisire familiarità con vim -b che mostrerà caratteri speciali come la CR in msysgit, e git show HEAD:path/to/your/file.txt che dovrebbe mostrare il file nel modo in cui git lo ha memorizzato.

Impostare core.whitespace cr-at-eol per fare in modo che patch e differenze non evidenziano CR come possibili spazi bianchi problematici.

Non vale la pena. Negozio come-è.

+0

Auto crlf dovrebbe essere falso <- Questo non è vero su Windows – prusswan

+2

sì è vero su Windows. Di nuovo, non fare nulla se non autocrlf = false. Lo sto facendo da 4 anni con più team in windows/.net. Puoi fare altre cose per farti cadere e ferire te stesso. Alla fine si imposta autocrlf su false. –

+3

Perché le prove aneddotiche specifiche per windows/.net sono più importanti di altre e cosa è consigliato in http://progit.org/book/ch7-1.html? – prusswan

6

Il problema si verifica probabilmente perché si imposta Git per archiviare i file internamente con crlf con l'impostazione core.eol. Quando aggiungi un file, Git ti avverte che lo cambierà nel formato interno.

Git funziona meglio con lf terminazioni di riga, quindi se possibile, utilizzare sempre core.eol = lf.

Questo dovrebbe spiegare quando usare core.autocrlf, Why should I use core.autocrlf=true in Git?

Si consiglia inoltre di utilizzare core.safecrlf. Controllare git config --help per i dettagli sulle impostazioni.

+0

La risposta che hai collegato agli stati: "A meno che tu non possa vedere un trattamento specifico che deve occuparsi di eol nativo, è meglio lasciare che autocrlf sia falso." –

+0

Non sono sicuro del motivo per cui ho ricevuto un downvote per questo? Ho perso qualcosa? @AdamDymitruk Fornisce anche un paio di casi in cui potrebbe essere utilizzato. Penso che sia utile sapere perché l'opzione è lì (se non dovessi mai usarlo, perché posso impostarlo?) – m0tive

24

molto nuovo, quindi impostare core.autocrlf su false non ha molto senso per me. Così, per altri neofiti, passare al file di configurazione in voi .git cartella e aggiunge:

[core] 
    autocrlf = false 

sotto il [core] intestazione.

+11

o dalla riga di comando ... git config core.autocrlf false – petercoles

0

Il rilevamento automatico dei formati funziona abbastanza bene. Pertanto, core.autocrlf=true è davvero una buona idea su Windows.

Dire git config --global core.safecrlf=false dice a Git: Hey, si prega di convertire il mio sbagliate fine riga (LF solo) a fine riga di Windows (CRLF) e non mi preoccupano con esso.

Pertanto, è necessario disabilitare realmente core.safecrlf. risposta

Longer a: https://stackoverflow.com/a/15471083/873282

+0

@downvoters: Spiega brevemente perché non rispondi a questa risposta. Ciò aiuta (i) gli altri a capire perché questa risposta non ha voti e (ii) a migliorare la risposta. – koppor

Problemi correlati