2011-12-28 49 views
40

我是git的新手,需要一些幫助。我在Windows上使用msysgit。Git,將文件添加到存儲庫給LF提供致命錯誤 - > CRLF

當我執行命令git add [folderName]我得到的迴應:

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

,然後如果你嘗試做一個承諾沒有任何反應。

$ 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) 

這些css/js文件中的一部分是從網上下載的,所以我想這就是爲什麼有LF。 如果我打開文件並剪切/粘貼內容,則會在下一個文件上出現錯誤,等等。

任何幫助將非常感激。

編輯

設置core.autocrlf爲false似乎解決了問題,但我看了很多帖子沒有設置這個選項設置爲false。

有人可以指出我在哪裏可以找到在這種情況下可能會出現什麼問題?

+0

你跟別人認爲是一個非Windows環境下工作? –

+2

不,我正在研究一個小型應用程序,我將使用appharbor。到目前爲止,一切都很好,但我想知道這些選擇有什麼不同。我完成應用程序後,我打算做一些reasrch,但同時我雖然我會使用SO快速解決方案。 – user619656

+0

然後將autocrlf設置爲false的所有更多理由。你不需要頭痛。按原樣提交文件。安裝msysgit時的默認設置採用最糟糕的選項太糟糕了。 –

回答

22

請相信代碼編輯器來操縱您的行尾。 Auto crlf應該是錯誤的。不要讓源代碼控制太聰明。如果不需要使用源代碼管理工具來更改行結束符,則不要。這會傷害。

重申一個可接受的答案:「除非你能看到必須處理本地EOL的特定處理,否則你最好離開autocrlf來做假。」

從上autocrlf該節結束的progit書

另外:

「如果你是一個Windows程序員做一個Windows的唯一項目,那麼你就可以關閉此功能,記錄在回車在配置值設置爲false」庫

唯一的其他幫助,我可以給的是,如果你走另一條路線,熟悉vim -b,它會顯示特殊字符,如CR在MSysGit和git show HEAD:path/to/your/file.txt應該以git存儲它的方式顯示你的文件。

設置core.whitespace cr-at-eol將補丁和差異設置爲不會突出顯示可能存在問題的空白的CR。

不值得麻煩。按原樣存儲。

+0

自動crlf應該是錯誤的< - 這是不正確的windows – prusswan

+2

是的它在Windows上是正確的。再次,除了autocrlf = false之外別做任何事。在過去的四年中,我一直在使用windows/.net中的多個團隊進行這項工作。你可以做其他的事情,跌倒並傷害自己。您最終將autocrlf設置爲false。 –

+3

爲什麼您的特定於windows/.net的軼事證據比其他人更重要,以及http://progit.org/book/ch7-1.html中的建議是什麼? – prusswan

6

該問題可能是由於您設置Git在內部存儲文件crlfcore.eol設置。當你添加一個文件時,Git會警告你它會把它改成內部格式。

Git最適合lf行結束符,所以如果可能的話總是使用core.eol = lf

這應該說明何時使用core.autocrlfWhy should I use core.autocrlf=true in Git?

您可能還需要使用core.safecrlf。有關設置的詳細信息,請檢查git config --help

+0

你與之相關的答案是:「除非你能看到必須處理本地EOL的具體處理,否則你最好不要將autocrlf僞造。」 –

+0

我不確定爲什麼我會收到一個downvote呢?我錯過了什麼嗎? @AdamDymitruk它也提供了一些可以使用的情況。我認爲知道爲什麼選擇它是有用的(如果我不應該使用它,爲什麼我可以設置它?) – m0tive

24

對此很新,所以將core.autocrlf設置爲false對我沒有太大意義。因此,對於其他新手,去配置文件在你的.git文件夾並添加:在[核心]標題下

[core] 
    autocrlf = false 

+11

或從命令行... git config core.autocrlf false – petercoles

0

格式的git autodetection工作得很好。因此,在Windows上,core.autocrlf=true是一個非常好的主意。

git config --global core.safecrlf=false說與git:嘿,請轉換我錯誤行結束(LF只)到Windows行尾(CRLF),不要打擾它了我。

因此,你應該真的禁用core.safecrlf。在

較長的答案:https://stackoverflow.com/a/15471083/873282

+0

@downvoters:請儘快解釋爲什麼你低估了這個答案。這有助於(i)其他人理解爲什麼這個答案沒有投票和(ii)改善答案。 – koppor

相關問題