2012-12-27 42 views
1

我的工作在Windows 7和防止我有一個.gitattributes文件中設置下面的方式(如github help描述)EOL問題:git EOL是否改變了相反的方式? (儘管.gitattributes)

* text=auto 

*.js text 

但是現在,當我犯了只具有LF行結束js -file我得到警告:

warning: LF will be replaced by CRLF in XXX.js. 
The file will have its original line endings in your working directory. 

嗯,這聽起來好像我將在我的倉庫CRLFLF在我的工作目錄,即使它應該是(和我想要它)另一種方式。提交後,js - 文件的行尾仍爲LF

我讀的警告是否錯誤,或者我是否以錯誤的方式設置了.gitattributes? 謝謝!

p.s.我的全球混帳配置有autocrlf = true,但不應該影響,因爲.gitattributes文件的提交

PPS當js文件是一個子目錄中的EOL轉換

回答

2

,應禁用autocrlf - 它不造成這種「情況「,但它確實與碰撞了gitattributes設置,並沒有增加任何好處。

您在回購中的EOL轉換沒有任何問題。您引用的消息告訴您,如果您再次檢出此文件(使用這些設置),您的工作目錄中就會有CRLF。但現在它將停留在LF。

如果你想知道是什麼行結尾的東西已經在你的回購協議,運行此:

git show commit:path/to/file | file -k - 

如果你想擺脫該消息的,設定你的編輯器來保存CRLF文件。或者更好的是如果你的所有工具都支持LF結局,設置此回購使用結賬LF(如果你不小心保存CRLF一個文件,它仍然是標準化):

git config core.eol lf 

注:這將可能只有當你設置了core.autocrlffalse

+0

沒有autocrlf有什麼問題?當你在網上隨意地將一些東西克隆到Windows機器上時,這會很有幫助。 – sabgenton

+0

你可以做'git config core.eol lf',但不用'* text eol = lf'作爲.gitattributes方式修改局部變量。我沒有看到OP的好處是回到了文本過濾設置的變量(特別是如果他將它與新的方式('.gitattributes')混合)。 – sabgenton

+0

@sabgenton autocrlf的問題之一是不同的人檢查相同的回購將有不同的設置。所以你會看到改變整個文件的提交。如果你從互聯網上克隆了一些東西,並認爲窗口上的行結尾是錯誤的,你應該添加一個'.gitattributes'文件。如果你確定你永遠不會提交,因此不想創建'.gitattributes',那麼你可以使用'.git/info/attributes'文件。 – Chronial

0

Git正在做你想要的那些措辭嚴厲的警告,你不需要改變任何東西(該警告只會談到發生在工作目錄AFAIK的事情而不是數據庫)。

LF將僅在回購庫中,如果您將該文件讀取並再次檢出,它將在工作樹(僅)中轉換爲CRLF。

我已經看到有人說,當涉及到行結尾時,不要更改本地核心設置/全局變量(article git hub引用)(我沒有看到與autocrlf的衝突),只使用.gitattribute,因爲它爲您工作的項目設定默認值,這是更新的方式。

如果你想要的東西是LF只有你應該使用一個不同的git屬性行,但堅持你對原來的問題得到它的罰款。(該docs page和您的github頁面似乎是說text eol=lf,如果你想只LF)

這是一個necropost只是說不要擔心它的sposed說:)

相關問題