2015-04-03 81 views
18

我們有這個在我們.gitattributes文件:gitattributes中的`* text = auto eol = lf`會怎樣?

* text=auto eol=lf 

我想準確地理解這是什麼一樣。第一部分是text=auto。從documentation

這確保了Git認爲是文本所有文件將有標準化的倉庫(LF)行結尾。

重要的部分是,Git只對它檢測爲文本文件的文件進行規範化。

但是,我不確定eol=lf部分。我認爲它也只會對文本文件進行規範化處理,但是我無法在文檔中找到它的支持,並且我們也有一個實例,當我們的PNG文件也進行了規範化處理時,使它們無效。

是否有設置,如上述,將基本上說:「不要在兩個方向正常化爲文本文件,並留下二進制文件單獨」?

回答

12

Git 2.10 fixed this現在的行爲如人們所期望的那樣。

+0

我的Git客戶端在2.9.15,更新到最後一個2.15解決我的問題。謝謝 – Nounours 2018-01-17 13:19:17

11

答案是否定的,Git目前(截至2.3)不能執行結賬EOL轉換,自動檢測二進制和文本格式,以便它僅處理文本。解決方法是僅爲選定的文件類型(例如,*.txt)指定eol=lf,或者相反,使用例如文件標記某些文件類型爲二進制文件。 *.png binary)。

相關:feature proposal on Git mailing list


* text=auto

這將正確的回購正常化文本文件。但是, 第二部分(結賬時的LF強制)目前無法輕鬆實現 ,因爲添加eol=lf不幸也會處理二進制文件。 今天唯一的解決方案是標記某些類型的轉換(例如, *.txt eol=lf),或者相反,將某些類型標記爲二進制(例如, *.png binary)。

這兩個來自同一個問題遭遇:在特定的文件類型必須 將在.gitattributes文件,這意味着 要麼類型必須提前知道的時間或所有開發人員必須 記得更新.gitattributes明確列出文件每次在項目中出現新文件類型 。他們不會。