git換行符自動轉換問題和解決dos和unix問題

很多開發者可能遇到過這個問題:從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爲例:
這裏寫圖片描述
git換行符自動轉換問題和解決dos和unix問題操作系統

3.你不嫌麻煩能夠手動解決dos轉unix問題命令行

find -type f | xargs dos2unixunix

相關文章
相關標籤/搜索