Git:warning: CALF wilL be replaced by LF in xxxx 問題解決

君乐豹發表於2024-05-21

warning: CALF wilL be replaced by LF in xxxx 問題解決辦法

出現這個問題的原因是像快取區中提交檔案時出現的

原因:

windows中的換行符為 CRLF,而在Linux下的換行符為LF,所以在執行add . 時出現提示

也就是,

工作區的檔案都應該用 CRLF 來換行。如果
改動檔案時引入了 LF,提交改動時,git 會警告你哪些檔案不是純 CRLF 檔案,但 git 不會擅自修改工作區的那些檔案,而是對暫存區(我們對工作區的改動)進行修改。也因此,當我們進行 git add 的操作時,只要 git 發現改動的內容裡有 LF 換行符,就還會出現這個警告。

git工作區預設為CRLF來作為換行符,所以當我們專案檔案裡有用的地方使用LF作為換行符,這個時候我們再繼續git add 或則git commit的時候就會彈出警告,當最終push到遠端倉庫的時候git會統一格式全部轉化為用CRLF作為換行符

解決方式:

情況一:

Git 可以在你提交時自動地把回車(CR)和換行(LF)轉換成換行(LF),而在檢出程式碼時把換行(LF)轉換成回車(CR)和換行(LF)。 你可以用git config --global core.autocrlf true 來開啟此項功能。 如果是在 Windows 系統上,把它設定成 true,這樣在檢出程式碼時,換行會被轉換成回車和換行:

#提交時轉換為LF,檢出時轉換為CRLF
$ git config --global core.autocrlf true

*適用於Windows系統,且一般為Windows預設設定,會在提交時對換行符進行CRLF - LF的轉換,檢出時又會進行LF - CRLF的轉換。

情況二:

如果使用以換行(LF)作為行結束符的 Linux 或 Mac,你不需要 Git 在檢出檔案時進行自動的轉換。然而當一個以回車(CR)和換行(LF)作為行結束符的檔案不小心被引入時,你肯定想讓 Git 修正。 所以,你可以把 core.autocrlf 設定成 input 來告訴 Git 在提交時把回車和換行轉換成換行,檢出時不轉換:(這樣在 Windows 上的檢出檔案中會保留回車和換行,而在 Mac 和 Linux 上,以及版本庫中會保留換行。)

#提交時轉換為LF,檢出時不轉換
$ git config --global core.autocrlf input

*適用於Linux系統,所有換行符都會進行CRLF - LF轉換,但操作時不會轉換回CRLF。

情況三:

如果你是 Windows 程式設計師,且正在開發僅執行在 Windows 上的專案,可以設定 false 取消此功能,把回車保留在版本庫中:

#提交檢出均不轉換
$ git config --global core.autocrlf false

你也可以在檔案提交時進行safecrlf檢查

#拒絕提交包含混合換行符的檔案
git config --global core.safecrlf true   
 
#允許提交包含混合換行符的檔案
git config --global core.safecrlf false   
 
#提交包含混合換行符的檔案時給出警告
git config --global core.safecrlf warn

建議:遇到了這種問題可以直接忽略,對我們整體工作不會造成影響!

相關文章