[英]Git makes all checked out files' end of line CRLF
我在mac上編程,我真的不明白Git對我文件行的結尾做了什么:
我創建了一個包含Unix格式文件的存儲庫(LF行尾) 。
當我克隆我創建的存儲庫時 ,我的所有行都是CRLF 。 它不應該自動檢測到我需要LF線端?
我將autoclrf設置為true。
GIT關於autoclrf的文檔很難理解:
如果您只想在工作目錄中使用CRLF行結尾而不管您正在使用的存儲庫,則可以設置配置變量“core.autocrlf”而不更改任何屬性。
[核心]
autocrlf = true
這不會強制所有文本文件的規范化,但確保引入存儲庫的文本文件在添加時將其行結尾標准化為LF,並且已在存儲庫中標准化的文件保持規范化。
第一句話說“如果你想擁有所有的crlf”,當第二句話說git會自動調整行尾。
就我而言,似乎Git將所有內容轉換為CRLF,並在我嘗試克隆時將其保留。
gitattributes手冊頁的布局很差。 在后面的部分中,您將找到:
core.eol
配置變量控制git將用於工作目錄中規范化文件的行結尾; 默認設置是使用您平台的本機行結束, 如果設置了core.autocrlf
則使用CRLF。
因此,除非您指定了core.eol
,否則無論您使用的是Apple Mac OS X,Microsoft Windows還是Ubuntu Linux,都會得到以CR + LF字符終止的行。
從你的問題:
第一句話說“如果你想擁有所有的crlf”,當第二句話說git會自動調整行尾。
重要的是要注意,當core.autocrlf
設置為true
時,有兩個調整方向:
您要做的第一件事是取消設置core.autocrlf
或將其設置為false
。 如果您希望簽出文本文件以符合用戶的OS首選行結尾,無論它們是如何創建的,只需將其添加到.gitattributes:
* text=auto
或者,如果git不擅長猜測你的哪個文件是文本,你可以聲明一個特定的擴展來進行這種雙向規范化:
*.ext text
(其中ext
是有問題的文件擴展名)
當你將core.autocrlf
設置為true
,Git在提交到repo時將行結尾轉換為LF
,但是使用適合你的平台設置的行結尾將文件寫入工作樹(Mac / Unix / Linux上的LF
,Windows上的CRLF
)。
是的,當autocrlf設置為true時,您應該在Windows上的工作樹中看到CRLF,其中包括瀏覽資源管理器時的情況。 如果您推送到Linux repo,您應該看到所有文件都使用LF正確結束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.