2011-12-01 97 views
0

我在ubuntu上使用git並將autocrlf設置爲true。我的編輯器被配置爲使用LF作爲行尾字符。我編輯的文件,並沒有git試圖將ubuntu中的LF轉換爲CRLF並將core.autocrlf設置爲true

git add . 

後我得到:

warning: LF will be replaced by CRLF in file1.txt. (1) 
The file will have its original line endings in your working directory. (2) 

關於(1),爲什麼混帳會想我的LF轉換在我的文件轉換成CRLF?只有當你的文件包含CRLF,並且只有那麼git會嘗試將CRLF轉換爲LF時,它應該如何工作?

至於(2),這是否意味着我正在看的文件將仍然只與LF但git的暫存區域中的快照轉換?

回答

1

通過查看警告消息,我猜你的配置如下:

  • 你(在git的1.7.2默認以上)使用窗戶core.eol設置爲native或已明確設置核心.eol到crlf
  • 你core.autocrlf設置爲input

這些git attributescore.autocrlfcore.eol讓利你配置你想要的行結束和他們可能的值,他們的意思是在git手冊頁捕獲和this stackoverflow answer

而對(1)和(2)的答案,你的問題是,「因爲你配置它是這樣的「

你應該做什麼取決於你在哪個平臺上,以及你會從哪個平臺訪問git。建議讓git僅存儲LF作爲行尾,因爲生成的blob散列值會發生改變,否則git會抱怨「更改行」,即使更改可能只是行結束字符。

既然你是在Ubuntu,你想設置core.eollfcore.autocrlfinput讓Git並不LF轉換爲CRLF在你的工作樹。

+0

不,我正在使用Ubuntu的。我確定core.autocrlf的配置是正確的。 – Shawn

+0

如果你在Ubuntu上,忘記所有其他的東西,並將core.autocrlf輸入。也就是說,如果沒有其他人在Windows上使用它。 –

0

如果您沒有進行跨平臺開發(尤其是Windows),請將autocrlf設置爲false,並讓您使用的人也做同樣的事情。在git中將它們製作成對象之前,不需要更改文件。這是一個巨大的麻煩。我在使用git的4年中從未處理過這個問題。除非你在使用Windows的x-platform ,否則設置爲false。輕鬆修復。

相關問題