2012-12-04 79 views
5

我有我的存儲庫中的文件.gitattributes看起來像這樣.gitattributes與core.autocrlf未設置

* text=auto 
*.txt text 

我在倉庫中,全局和系統設置未設置core.autocrlf。根據gitattributes的文檔,我的理解是,存儲庫中名稱以.txt結尾的所有文件都應該使用本機行結尾進行檢出。但是,我所看到的是,.txt文件始終具有換行結尾的LF,即使在Windows上也是如此。鑑於這種配置,爲什麼不在Windows上結束CRLF?

+0

我以爲你的第二行被擊敗,在這種情況下,你應該換行。我看到有人說,你不能在.gitattributes中設置一些東西,在你的例子中你已經設置了* .txt文件在第一行顯示爲text = auto。 – sabgenton

+0

@sabgenton,來自[手冊頁](http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html),「當多個模式匹配路徑時,後面的一行覆蓋更早的行,這個重寫是按屬性完成的。「另外,您可能想參考下面我的答案中的鏈接。 – cleek

+0

[git line endings:renormalize似乎沒有檢出正確的結束符]的可能重複(http://stackoverflow.com/questions/13531988/git-line-endings-renormalize-does-not-seem-to-checkout - 右行結尾) –

回答

12

問題是在處理core.eol中存在一個錯誤。 gitattributes的文檔說,如果未設置,那麼將使用native,默認爲系統的適當行結尾(CRLF for Windows,unix的LF),但是不要將core.eol設置爲未設置,或將其設置爲本機系統總是以LF結束行結束。那麼答案就是明確地將core.eol設置爲在Windows上的crlf。在http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/的意見讓我回答這個問題。

+2

謝謝你確認這一點,我以爲我瘋了一會兒。我已經提交了[一個錯誤](http://github.com/msysgit/msysgit/issues/97)。 – bricelam

+0

@Brice:感謝您記錄該錯誤。我剛剛發佈了同樣的問題。 –

+0

我是在問這裏之後發表評論的人 - 查看[這裏]的回答(http://stackoverflow.com/a/13552603/281545)以獲得錯誤報告/修復的鏈接。真的很高興它吸引了一些注意這是非常惱人的:) –

-3

你需要設置core.autocrlf來輸入。在Windows上將其設置爲true。

如果您不共享x平臺,那麼將其設置爲false,並完全忽略這些屬性。

+0

第二行不良建議。您不知道您是否會決定在以後與x平臺共享,因此從頭開始配置它是明智的。 – orad