簡體   English   中英

下線行為和 Git

[英]End-of-Line Behavior and Git

我是 Git 的新手。 我之前使用過 GitHub,但最近我開始在我的系統上本地使用 Git 本身進行版本控制。

我在 Windows 系統上。 但是,我正在處理最初在 Mac 上創建的一些文件。 因此,每當我暫存文件時,都會收到以下警告:

警告:LF 將在contact.html 中替換為CRLF。 該文件將在您的工作目錄中具有其原始行結尾

現在,我在這個主題上發現的每個先前的問題本質上只是一群人一遍又一遍地解釋設置 (core.autocrlf = true) 的目的。 手冊頁非常清楚,在 Windows 系統上,“true”應該導致工作目錄中的 CRLF,但所有提交都將在 repo 中轉換為 LF。 我明白了。

1) 為什么這條消息的措辭如此糟糕。 聽起來很倒退。 最初的行尾(至少最初)是 LF。 那不應該在我的工作目錄中。 聽起來好像它向我保證它將在工作目錄中保留 LF,但在 repo 中是 CRLF。 與我想要的相反。

2)假設'core.autocrlf = true'給了我我想要的行為(回購中的LF----工作副本中的CRLF)。 如何禁用這個非常混亂的消息,以便每次“git add”時都看不到它? 如果我正在處理多個文件,它會產生很多視覺混亂。

此消息意味着您的工作樹中有文件以 LF 結尾。 這是有道理的,因為它們是在 Mac 上創建的,並且所有現代版本的 macOS 都使用 LF 結尾。 但是,如果你提交它們然后檢查它們,你最終會得到 CRLF 行結尾,因為你在 Windows 上並且設置了core.autocrlf 這就是消息的意思。 下次出於任何原因簽出文件時,工作樹中的 LF 結尾將被替換。

至少在原則上,這個想法是警告您,如果對您很重要,您的行尾將不會被保留。 也許您正在使用 shell 腳本,甚至在 Windows 上,shell 也需要 LF 結尾。 因此,您需要向.gitattributes添加一個條目。

如果您使用二進制文件執行某些行結束轉換會導致損壞的操作,它還有助於警告您。 畢竟,如果您更改所有 0x0a 和 0x0d 字節,您的精美 JPEG 圖像將無法正常工作。

如果需要,可以通過將core.safecrlf設置為false來關閉此警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM