天天看點

解決:git warning: LF will be replaced by CRLF in xxxx一. git add -A報錯二. 什麼原因三. 解決方案 2. 使用 git config --global core.autocrlf false 來解決參考文章

一. git add -A報錯

在利用git add -A添加檔案時,意外的發現報錯了

解決:git warning: LF will be replaced by CRLF in xxxx一. git add -A報錯二. 什麼原因三. 解決方案 2. 使用 git config --global core.autocrlf false 來解決參考文章

報錯資訊中: 

  • LF:Line Feed 換行
  • CRLF:Carriage Return Line Feed  回車換行鍵

大意是:

警告:today.txt(我要添加的檔案名)中LF被CRLF替換

在工作區裡,這個檔案将會保持它原來的換行符

二. 什麼原因

1. 不同作業系統的行尾結束符(換行符)是不同的

  • windows下:CRLF("\r\n",使用回車換行兩個字元)
  • unix下:LF("\n",隻使用換行)
  • mac下:CR("\r",隻使用回車)

2. 使用Git Bash,相當于Linux環境

3. 我的檔案也是通過touch today.txt和vim today.txt寫入的,這種情況下換行符是Linux下的LF

解決:git warning: LF will be replaced by CRLF in xxxx一. git add -A報錯二. 什麼原因三. 解決方案 2. 使用 git config --global core.autocrlf false 來解決參考文章

4. git工作區預設以CRLF來作為換行符,如果我們的檔案中使用LF作為換行符,這時我們繼續git add或git commit就會彈出警告,當最終push到遠端倉庫的時候,git會統一轉化,最終以CRLF作為換行符

5. 如何了解 "The file will have its original line endings in your working directory." 

簡單來說,設定 core.autocrlf=true 後,我們工作區的檔案都應該用 CRLF 來換行。如果改動檔案時引入了 LF,或者設定 core.autocrlf 之前,工作區已經有 LF 換行符。送出改動時,git 會警告你哪些檔案不是純 CRLF 檔案,但 git 不會擅自修改工作區的那些檔案,而是對暫存區(我們對工作區的改動)進行修改。也是以,當我們進行 git add 的操作時,隻要 git 發現改動的内容裡有 LF 換行符,就還會出現這個警告

三. 解決方案

1. git中如何處理"換行"(line ending)

core.autocrlf是git中負責處理line ending的變量,可以設定三個值:true, false, input,預設是true

  • true:這意味着當你添加檔案到git倉庫時,git都會視它為文本檔案,将其換行符LF轉化為CRLF
  • false:當設定成false時,line endings将不做轉換操作。文本檔案保持原來的樣子
  • input:設定為input時,添加檔案git倉庫時,git把crlf程式設計lf。當有人Check代碼時還是lf方式。是以在window作業系統下,不要使用這個設定

 2. 使用 git config --global core.autocrlf false 來解決

解決:git warning: LF will be replaced by CRLF in xxxx一. git add -A報錯二. 什麼原因三. 解決方案 2. 使用 git config --global core.autocrlf false 來解決參考文章

3. core.autocrlf設定為false的風險

多人協作開發時,如果 windows 上設定 core.autocrlf=false,倉庫裡也沒有配置 .gitattributes,很容易引入 CRLF 或者混合換行符(Mixed Line Endings,一個檔案裡既有 LF 又有CRLF)到版本庫,這樣就可能産生各種奇怪的問題

如果有換行符不比對本地平台的情況,建議用 dos2unix 之類的工具轉換下換行符,因為很多配置檔案是嚴格要求檔案編碼和換行符的,謹慎一點比較好

參考文章

https://www.cnblogs.com/helloHKTK/p/7351946.html

https://blog.csdn.net/wowoniuzailushang/article/details/54317129

https://www.zhihu.com/question/50862500/answer/123197258

轉載于:https://www.cnblogs.com/my_captain/p/9208273.html

繼續閱讀