首先普及下基本知識:
CRLF是Carriage-Return Line-Feed的縮寫,意思是回車換行,就是回車(CR, ASCII 13, \r) 換行(LF, ASCII 10, \n)。換行在有的ASCII碼錶也用newline(簡nl)來進行表示,這裏的lf是line feed的概念,意思是一樣的
CRLF ---------- '\n\r' 回車換行
CR ---------- '\n' 回車
LF ---------- '\r' 換行
window unix mac 等平臺,換行符的不同:
系統 | 換行符 |
---|---|
windows | \n\r |
unix | \n |
mac | \r |
假如你正在Windows上寫程序,又或者你正在和其他人合作,他們在Windows上編程,而你卻在其他系統上,在這些情況下,你可能會遇到行尾結束符問題。這是因爲Windows使用回車和換行兩個字符來結束一行,而Mac和Linux只使用換行一個字符。雖然這是小問題,但它會極大地擾亂跨平臺協作。
Git可以在你提交時自動地把行結束符CRLF轉換成LF,而在簽出代碼時把LF轉換成CRLF。用core.autocrlf
來打開此項功能,如果是在Windows系統上,把它設置成true
,這樣當簽出代碼時,LF會被轉換成CRLF,有以下幾種方案:
1. 在安裝“Git for windows”的時候,在“Configuing the line ending conversions”頁面,將默認選中改爲“Checkout as-is, commit as-is”
2. 如果已經安裝過了,也可以通過命令行修改,打開“Git Bash”,然後輸入
$ git config --global core.autocrlf input
3.也可以在“Git Bash”中修改~/.gitconfig文件,加入或修改
[core]
autocrlf = input
4.如果使用TortoiseGit,可以在setting的Git配置中選擇Global模式,取消選中“AutoCrlf”,然後保存配置
以下兩種模式下對應的命令:
1> AutoCRLF
#提交時轉換爲LF,檢出時轉換爲CRLF
git config --global core.autocrlf true
#提交時轉換爲LF,檢出時不轉換
git config --global core.autocrlf input
#提交檢出均不轉換
git config --global core.autocrlf false
2>SafeCRLF
#拒絕提交包含混合換行符的文件
git config --global core.safecrlf true
#允許提交包含混合換行符的文件
git config --global core.safecrlf false
#提交包含混合換行符的文件時給出警告
git config --global core.safecrlf warn