很多開發者可能遇到過這個問題:從git上拉取服務端代碼,而後只修改了一處地方,準備提交時,用diff軟件查看,卻發現整個文件都被修改了。這是git自動轉換換行符致使的問題。 android
緣由
不一樣操做系統使用的換行符是不同的。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可能會不工做,尤爲是文件中出現中文字符後有換行符時。 git
解決方案
1.禁用git的自動換行功能:
在本地路徑C:\ Users\ [用戶名] \ .gitconfig下修改git配置[core],若是沒有就直接添加上去:
core]bash
autocrlf = false filemode = false safecrlf = true
git bash命令行也能夠修改,最終也是修改.gitconfig配置文件:
分別執行:ide
git config --global core.autocrlf false git config --global core.filemode false git config --global core.safecrlf true
2.配置IDE開發環境,將它的換行格式指定爲LF,以android studio爲例:
這裏寫圖片描述
操作系統
3.你不嫌麻煩能夠手動解決dos轉unix問題命令行
find -type f | xargs dos2unix
unix