不少開發者可能遇到過這個問題:從git上拉取服務端代碼,然后只修改了一處地方,准備提交時,用diff軟件查看,卻發現整個文件都被修改了。這是git自動轉換換行符導致的問題。
原因
不同操作系統使用的換行符是不一樣的。Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回車(CR, ASCII 13, \r) 換行(LF, ASCII 10, \n)】作為換行符。而git入庫的代碼采用的是LF格式,它考慮到了跨平台協作的場景,提供了“換行符自動轉換”的功能:如果在Windows下安裝git,在拉取文件時,會自動將LF換行符替換為CRLF;在提交時,又會將CRLF轉回LF。但是這個轉換是有問題的:有時提交時,CRLF轉回LF可能會不工作,尤其是文件中出現中文字符后有換行符時。
解決方案
1.禁用git的自動換行功能:
在本地路徑C:\ Users\ [用戶名] \ .gitconfig下修改git配置[core],如果沒有就直接添加上去:
-
autocrlf = false
-
filemode = false
-
safecrlf = true
git bash命令行也可以修改,最終也是修改.gitconfig配置文件:
分別執行:
-
git config -- global core.autocrlf false
-
git config -- global core.filemode false
-
git config -- global core.safecrlf true