項目的開發環境為Windows,在Linux環境下編譯,使用Git進行版本控制。
在安裝好Git和TortoiseGit后,從遠端clone,遇到一個奇怪的問題,Shell腳本中的LF總是被替換成了CRLF,最后發現是在Git的安裝過程中有一項沒有被配置好。
在Windows下,由回車CR(0x0D)(\r)和換行LF(0x0A)( \n))共同標志一行的結束。
而在Linux和Mac環境下,每一行的結束僅有一個換行LF(0x0A)(\n)。
在Git中有一項core.autocflf配置項,它可以被配置為true,false和input,它們分別表示:
1 // 提交時轉換為LF,檢出時轉換為CRLF 2 git config --global core.autocrlf true 3 4 // 提交時轉換為LF,檢出時不轉換 5 git config --global core.autocrlf input 6 7 // 提交檢出均不轉換 8 git config --global core.autocrlf false
使用上述的最后一條命令,將core.autocrlf配置為false,即不開啟自動轉換功能。之后重新clone,本地倉庫中的Shell腳本中不再出現CR。檢查我的Git配置,發現core.autocrlf被配置為了true。這樣,在從遠端clone倉庫時,Shell腳本中的LF就被替換成了CRLF。