window和mac的同學合作開發項目,會出現git提交/拉取時換行符不一致導致,提示 "the text is identical, but the files do not match, newlines”等字樣,會出現很多文件發生更改,下面說說換行符引起的這個問題.
CRLF
Carriage-Return Line-Feed的縮寫,回車換行的意思
- CR:Carriage Return,對應ASCII 13中轉義字符\r,表示回車
- LF:Linefeed,對應ASCII 10中轉義字符\n,表示換行
- CRLF:Carriage Return & Linefeed,\r\n,表示回車並換行
(ASCII碼表里也有用newline, nl表示換行的),據傳說,CR、LF最原始的還要追蹤到最早到機械打字機時代,CR回到同一行的紙張最左側的意思,LF代表換一行,將紙張上一一行,兩個組合可不就是換行.
windnow unix mac等平台換行符不同:
可以通過git全局設置修改使用的換行符問題,來支持跨平台合作開發項目(window和mac):
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