Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1560375
  • 博文数量: 289
  • 博客积分: 11086
  • 博客等级: 上将
  • 技术积分: 3291
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-22 17:06
个人简介

徐小玉的博客。

文章分类

全部博文(289)

文章存档

2023年(6)

2022年(1)

2021年(2)

2020年(9)

2019年(9)

2018年(6)

2017年(10)

2016年(10)

2014年(3)

2013年(4)

2011年(12)

2010年(16)

2009年(14)

2008年(119)

2007年(48)

2006年(20)

我的朋友

分类: LINUX

2014-08-19 15:35:56

在使用git的过程中,如果我们的项目是跨平台开发的


那么CRLF的处理也许会成为一个很头疼的事情,有可能会出以下的莫名其妙的问题:


我们的某个开发人员在linux上提交的一个文件


当从windows上pull下来后,没做任何的修改,查看其status,它的状态已经是modifed了


即使你使用git checkout -f来恢复改文件,它的状态仍然是modified,真是郁闷…


后来,才发现就是CRLF惹的祸


 


我们都知道,在Windows上是CRLF来作为一行的结束符,而Linux上则是LF作为行结束符


在git中提供了autocrlf的设置,可以用来自动转换CRLF,它可以设置成true,false,input


Windows上的msysgit默认设置了autocrlf为true


这样,在提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF


这样保证了从windows平台上提交的代码,都是以LF作为行结束符


在linux平台上,git默认设置autocrlf为false,也即它不会自动处理CRLF


这样就有一个问题,如果我们把windows上的一个文件给上传到linux上,并提交


那么,提交到仓库中的代码就会以CRLF来换行了,


这样就会导致我们在windows上查看改文件的状态就会是modified


解决这个问题有以下2个办法:


  1. 在Linux上设置autocrlf为input,这样,Git在提交时把CRLF转换成LF,签出时不转换

     

  2. 对于从Windows上直接拷到Linux上的文件,首先把它转换成linux格式后,再进行提交

阅读(3399) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~