git換行符自動轉換導致整個文件被修改的解決方案


不少開發者可能遇到過這個問題:從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],如果沒有就直接添加上去:

  1.  
    autocrlf = false
  2.  
    filemode = false
  3.  
    safecrlf = true

git bash命令行也可以修改,最終也是修改.gitconfig配置文件: 
分別執行:

  1.  
    git config -- global core.autocrlf false
  2.  
    git config -- global core.filemode false
  3.  
    git config -- global core.safecrlf true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM