让人抓狂的换行符LF和CRLF

让人抓狂的换行符LF和CRLF

前言

使用过git的小伙伴都知道,提交版本前会使用git diff来对比一下当前的修改,确认无误后再commit。

然而,有时候会碰上这种情况(Pycharm里的文件对比):

红框里的意思:内容上仅仅是换行符的差异

左边是上一版本,右边是当前版本(工作区的版本)。

左边的换行符是 LF,右边换行符是 CRLF

下面依次几个问题:

  • LF和CRLF是什么?
  • 为什么代码里会出现这种diff?
  • 如何处理这种换行符差异?

问题一:LF和CRLF是什么?

  • LF:"\n",Linux的换行符;

  • CRLF:"\r\n",Windows的换行符。

问题二:为什么代码里会出现这种diff?

  • 情况一:代码开发者在Linux和Windows上都编辑过代码且来回传输过;

  • 情况二:在多人协作开始时也会出现这种情况,比如猿A喜欢在Linux上写代码,并提交。这个时候代码版本里保存的就是 LF换行符。而猿B在Windows上开发,他的代码里换行符就是CRLF。于是猿B代码一对比,就出现了本文开头的现象。

  • 情况三:git的 core.autocrlf这个配置是True,即git pull时自动将远程代码里的换行符(比如LF)转换成当前系统的换行符(比如CRLF)。

问题三:如何处理这种换行符差异?

  • 方法一:如果确认代码内容没什么差异,只是单纯的换行符差异的话,最简单的办法就是直接丢弃当前的改动,可以使用pycharm里的revert按钮即可,点击确认:

方法二:Windows系统解决办法:修改 git 全局配置,禁止 git 自动将 lf 转换成 crlf, 命令

git config --global core.autocrlf false

再次查看:

git config --global -l

结果如下:core.autocrlf=false

  • 17
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值