我在閱讀有關.gitattributes檔案和規則來強制行結尾的一些教程,它是這樣寫的* text=auto,并在一些人,這就像* text=auto eol=lf在檔案的第一行。
有什么不同嗎?第一個到底是做什么的?它甚至會強制任何行結尾嗎?
同樣在一些存盤庫中提到了執行* text=autoLF 規范化!我不知道這是真的還是假的。
uj5u.com熱心網友回復:
這些屬性之間是有區別的。 text要求 Git 執行行尾轉換。每當 Git 執行此操作時,它都會將 LF 結尾存盤在存盤庫中,并且當它在作業樹中檢出檔案時會轉換它們。 text=auto要求 Git 在檔案的開頭搜索 NUL 位元組,如果找到,則檔案是二進制檔案并且不執行轉換;否則,檔案為文本,并執行轉換。這通常在大多數情況下都可以正常作業,并且是一個明智的默認設定。
默認情況下,Git 遵循幾個配置變數來決定應該在作業樹(LF 或 CRLF)中使用哪種換行符,除非eol設定了屬性。如果eol已設定,則 (a) 檔案自動設定為text(b) 始終使用該行結尾。
所以在前一種情況下,* text=auto說,“猜猜這是否是一個文本檔案,如果是,用用戶喜歡的行結尾檢查這個檔案。” 將eol=lf僅適用于被猜測為檔案text在這種情況下,Git的2.10。通常,eol如果text顯式設定、text=auto已設定并且檔案被檢測為文本,或者如果text未指定,則適用;在 Git 2.10 及更高版本中,它不會影響-text使用text=auto.明確標記或檢測為二進制檔案的檔案。
但是,如果您使用的是舊版本的 Git,這可能會導致一些二進制檔案被錯誤處理,因為它會強制它們始終是文本。如果您的存盤庫僅包含文本檔案,那么它將起作用,但最好將其寫為* text eol=lf. 否則,您可以分別指定不同型別的檔案:
* text=auto
*.c text
*.jpg -text
*.sh text eol=lf
*.bat text eol=crlf
上面將 shell 檔案設定為 LF,因為它們是作業所必需的,對于具有 CRLF 結尾的批處理檔案也是如此。JPEG 檔案不會進行任何轉換,因為它們是二進制檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409114.html
標籤:
上一篇:Gitstash/whatever在每個git開關上?
下一篇:不分離頭的git子模塊替換
