1. 程式人生 > >windows系統下使用git出現:warning: LF will be replaced by CRLF in

windows系統下使用git出現:warning: LF will be replaced by CRLF in

今天學習git的時候出現了一個報錯:

$ git add readme.txt readme.txt
warning: LF will be replaced by CRLF in learngit/readme.txt.
The file will have its original line endings in your working directory

查閱了一些部落格,才知道原因是windows系統的換行符和Unix下的換行符不同,但是git會幫我們自動進行換行符的轉換,所以出現了這個warning

解決的方法就是,禁止自動轉換:

git config --global core.autocrlf false

執行上列程式碼,再次進行git add的時候報錯就解決啦

知識拓展

CR、LF、CR/LF為不同作業系統上使用的換行符:

Windows/DOS系統:採用CR/LF表示下一行;
Unix/Linux系統:採用LF表示下一行;
Mac OS系統:採用CR表示下一行;
Mac OS X系統:採用LF表示下一行( Mac OS X已經改成和Unix/Linx一樣使用LF )。
  • CR使用符號’\r’,十進位制ASCII程式碼是13,十六進位制程式碼為0x0D;LF使用’\n’符號表示,ASCII程式碼是10,十六製為0x0A。所以Windows平臺上換行在文字檔案中是使用 0d 0a 兩個位元組表示,而UNIX和蘋果平臺上換行則是使用 0a 或 0d 一個位元組表示。

  • Unix/Linux/Mac系統下的檔案在Windows裡開啟的話(使用Windows自帶記事本),會出現換行丟失,所有文字會變成一行,整個文字會亂成一團。Windows系統下的檔案在Unix/Linux/Mac裡開啟的話,在每行的結尾可能會多出一個^M符號。

目前大部分的編輯器和IDE都支援這幾種換行符(除了notepad),但是跨平臺協作專案原始碼到底儲存為哪種風格的換行符呢?輸出的文字需要儲存為哪種風格的換行符呢?Git提供了一個解決方案——在跨平臺協作場景時,會提供一個“換行符自動轉換”的功能。

Git CRLF

  • Git預設在提交時將Windows換行符(CRLF)轉換為LF,在拉取時將UNIX換行符(LF)替換成CRLF。我們可以通過設定autocrlf和safecrlf來設定具體的操作。

如果檔案已經被替換過了,可以使用dos2unix 將檔案轉換為unix格式,然後在提交。

感謝以下部落格!
https://blog.csdn.net/leedaning/article/details/53024162