linux git diff m,消除Git diff中^M的差异

在Windows上把一个刚commit的文件夹上传到了Ubuntu。在Ubuntu上使用git status查看,发现很多文件都被红色标注,表示刚刚修改未add。在Windows上明明是working tree clean,同一个文件夹用FTP传到了Ubuntu,怎么会修改文件内容呢?

于是,用git diff查看文件差异,每一行结尾都有^M标注。百度了一下,了解了原因:

这是由于换行符在不同的操作系统上定义的区别造成的。

Windows用CR LF来定义换行,Linux用LF。CR全称是Carriage Return ,或者表示为\r, 意思是回车。 LF全称是Line Feed,它才是真正意义上的换行表示符。为什么Windows添加一个CR和LF组合表示,我并不清楚。不过如果用git diff的时候看到^M字符,就说明两个文件在换行符上有所差别。

比如从我的Windows开发的同时那边拿来一个目录,就会发现几乎所有的文件都被修改过了。其实并不是这样,都是由于文件多了CR后造成的。

GitHub的帮助网站上给出了一种**解决方案**:

在Windows的文件夹上新建一个.gitattributes文件

文件内容如下:

# Set the default behavior, in case people don't have core.autocrlf set.

* text=auto

# Explicitly declare text files you want to always be normalized and converted

# to native line endings on checkout.

*.c text

*.h text

# Declare files that will always have CRLF line endings on checkout.

*.sln text eol=crlf

*.css text eol=crlf

*.js text eol=crlf

*.md text eol=crlf

*.txt text eol=crlf

*.sql text eol=crlf

*.php text eol=crlf

# Denote all files that are truly binary and should not be modified.

*.png binary

*.jpg binary

其中,帮助网站上有详细介绍了text关键字。eol=crlf表示使用CRLF换行。

根据Ubuntu上哪些类型的文件被标红, 便在.gitattributes上将text属性设置为eol=crlf。

保存文件。

查看一下状态:git status,发现.gitattributes修改未暂存

暂存:git add .gitattributes

提交:git commit -m "Add a .gitattributes file

接下来上传到Ubuntu上,.gitattributes就发挥了作用。使用git status查看,整个工作区都清静了。

0b1331709591d260c1c78e86d0c51c18.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值