git提交/拉取时换行符不一致导致 提示 "the text is identical, but the files do not match, newlines"等字样


首先普及下基本知识:

       CRLF是Carriage-Return Line-Feed的缩写,意思是回车换行,就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lf是line feed的概念,意思是一样的

       CRLF ----------   '\n\r'          回车换行

       CR     ----------    '\n'            回车

       LF      ----------    '\r'             换行

 

window unix mac 等平台,换行符的不同:

系统换行符
windows\n\r
unix\n
mac\r

 

      假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。

       Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF,有以下几种方案:

    1. 在安装“Git for windows”的时候,在“Configuing the line ending conversions”页面,将默认选中改为“Checkout as-is, commit as-is”

    2. 如果已经安装过了,也可以通过命令行修改,打开“Git Bash”,然后输入
        $ git config --global core.autocrlf input

    3.也可以在“Git Bash”中修改~/.gitconfig文件,加入或修改
        [core]
                autocrlf = input

    4.如果使用TortoiseGit,可以在setting的Git配置中选择Global模式,取消选中“AutoCrlf”,然后保存配置

以下两种模式下对应的命令:

1> AutoCRLF
	#提交时转换为LF,检出时转换为CRLF
	git config --global core.autocrlf true   

	#提交时转换为LF,检出时不转换
	git config --global core.autocrlf input   

	#提交检出均不转换
	git config --global core.autocrlf false
	
2>SafeCRLF
	#拒绝提交包含混合换行符的文件
	git config --global core.safecrlf true   

	#允许提交包含混合换行符的文件
	git config --global core.safecrlf false   

	#提交包含混合换行符的文件时给出警告
	git config --global core.safecrlf warn

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值