Git 換行符自動轉換問題,Git中的AutoCRLF與SafeCRLF換行符問題


片頭先引用2篇,IDE中修改換行符的文章

—————-本文主題——————–

以前都是在Linux上工作,所以在使用Git的時候沒有碰到文件行分隔符的問題,現在突然轉到Windows上使用Git,發現原來是Unix文件行結束符的文件在使用git diff的時候顯示文件所有行都被修改。

導致這個問題的原因是Git自作聰明的“換行符自動轉換”功能。要修復這個問題可以有幾個方式

  • 在安裝“Git for windows”的時候,在“Configuing the line ending conversions”頁面,將默認選中改為“Checkout as-is, commit as-is”

  • 如果已經安裝過了,也可以通過命令行修改,打開“Git Bash”,然后輸入

git config --global core.autocrlf false 
  • 也可以在“Git Bash”中修改~/.gitconfig文件,加入或修改下面的行
[core]
autocrlf = false
  • 如果使用TortoiseGit,可以在setting的Git配置中取消選中“AutoCrlf”,然后選中“save as Global”

————–華麗的分割線———————–

最近在使用GitHub,發現不時沒有修改過的文件要提交,對比發現文件全部修改,但找不到不一樣的地方。
想可能是換行符的問題,因為Windows和Linux的換行符不一樣,而Git默認應該是Linux的,今天Bing了下,果然是這個問題。

CR
回車 LF換行Windows/Dos CRLF \r\nLinux/Unix LF \n
MacOS CR \r
解決方法是:打開命令行,進行設置,如果你是在Windows下開發,建議設置autocrlf為true
2014/08/20 補充:如果你文件編碼是UTF8並且包含中文文字,那還是把autocrlf設置為false,並且把所有文件轉換為Linux編碼(即LF\n),開啟safecrlf檢查。

一、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
 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com