原创地址: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(默认值)。