git在window与linux的换行符问题

原创地址:https://www.cnblogs.com/xbcq/p/5884463.html

背景:项目JDK升级1.5到1.7,版本控制由SVN改为GIT,数据库不变,操作系统不变

测试人员测试发现:当在文本框输入换行符之后,数据库保存的数据在换行符处多了“@Enter”;同时从数据库取数时,中间含有换行符的数据,页面输出也会多“@Enter”。

过程:服务器测试,本地复现,添加debug,读前台程序,,,,

最后查找到,程序是在读取数据之后对数据做了特殊字符转换,OK,开始读转换代码。发现windows下面换行符为\r\n,而从配置文件读出来的规则为\n做相应转换,同时程序中写读取配置文件规则为校验\r\n。。。so,配置文件的换行符有问题,开始查找准生产的文件做替换,测试通过。用git提交,发布,测试。。。问题还在。。重新查看配置文件,没有被修改,,为什么??


最后,查阅相关资料,找到原因。这个问题是git在window与linux的换行符问题,autocrlf在window和linux下不一样。假如不同的终端提交时候使用了不同的换行符,就会出现这个问题。

由于我们需要提交时不修改为linux下的换行符,但是这是在git管理平台设置的,只能麻烦配置人员做修改了。

如果只是因为操作平台不一致的话,我们可以参考如下方法,来设置本地和服务器统一编码。

解决方案:a、安装时候,大家的选项大多是默认安装,所以在autocrlf选项时候,一般也是默认的


但是,在多人协同开发时候,不同终端不同git的配置不一样,就会导致问题


安装时候可以选择这个,checkout不修改文件换行符,commit不修改文件换行符  

  b、假如已经出现问题。

    如果你的源文件中是换行符是LF,而autocrlf=true, 此时git add就会遇到 fatal: LF would be replaced by CRLF 的错误。有两个解决办法:

    1. 将你的源文件中的LF转为CRLF即可【推荐】

    2. 将autocrlf 设置为 false

 

    如果你的源文件中是换行符是CRLF,而autocrlf=input,  此时git add也会遇到 fatal: CRLF would be replaced by LF 的错误。有两个解决办法:

    1. 将你源文件中的CRLF转为LF【推荐】

    2. 将autocrlf 设置为true 或者 false

 

    在Mac上设置 autocrlf = input, 在Windows上设置autocrlf = true(默认值)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值