最近在使用Github時遇到個問題。
衆所周知,在各操做系統下,文本文件所使用的換行符是不同的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),後來的 OS X 在更換內核後與 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)做爲換行符。linux
Git提供了一個換行符自動轉換功能試圖解決這個問題—autocrlf,他包含了三種狀態,true,input,false,詳細內容能夠看下面。Windows平臺上的默認設置是true,這樣在你簽出代碼的時候他會自動轉換成你操做系統所使用CRLF,而後在提交的時候又自動轉換成LF。git
這個時候問題來了,autocrlf在Mac下默認設置成false,由於如今Mac也是用LF,按理說就不必進行任何轉換,可是若是你在windows操做系統上將版本庫放在例如Dropbox這種雲存儲上,而後同步到Mac上,或者什麼其餘方式把windows文件引入到Mac下。那麼在你提交的時候在Mac環境下不會自動將CRLF轉換成LF,那麼就會發現全部行都有改動。這個時候就須要設置成input。windows
Github上的建議配置,是在windows下將core.autocrlf設爲true,在Mac和linux下設爲input,這樣就能夠有效避免上述問題。操作系統
P.S.與換行符相關的命令code
#AutoCRLF#提交時轉換爲LF,檢出時轉換爲CRLF git config --global core.autocrlf true#提交時轉換爲LF,檢出時不轉換 git config --global core.autocrlf input #提交檢出均不轉換 git config --global core.autocrlf false#SafeCRLF#拒絕提交包含混合換行符的文件 git config --global core.safecrlf true#容許提交包含混合換行符的文件 git config --global core.safecrlf false#提交包含混合換行符的文件時給出警告 git config --global core.safecrlf warn
P.S.S. git config 有三個做用域system,globe,local。優先級是local>globe>system。剩下的之後在研究作用域