文档章节

Git自动转换换行符(autocrlf)带来的问题

游鱼彩虹
 游鱼彩虹
发布于 2016/12/19 11:48
字数 540
阅读 280
收藏 0
Git

最近在使用Github时遇到个问题。
众所周知,在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。

Git提供了一个换行符自动转换功能试图解决这个问题—autocrlf,他包含了三种状态,true,input,false,详细内容可以看下面。Windows平台上的默认设置是true,这样在你签出代码的时候他会自动转换成你操作系统所使用CRLF,然后在提交的时候又自动转换成LF。

这个时候问题来了,autocrlf在Mac下默认设置成false,因为现在Mac也是用LF,按理说就没必要进行任何转换,但是如果你在windows操作系统上将版本库放在例如Dropbox这种云存储上,然后同步到Mac上,或者什么其他方式把windows文件引入到Mac下。那么在你提交的时候在Mac环境下不会自动将CRLF转换成LF,那么就会发现所有行都有改动。这个时候就需要设置成input。

Github上的建议配置,是在windows下将core.autocrlf设为true,在Mac和linux下设为input,这样就可以有效避免上述问题。

P.S.与换行符相关的命令

#AutoCRLF#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true#提交时转换为LF,检出时不转换
git config --global core.autocrlf input   
#提交检出均不转换
git config --global core.autocrlf false#SafeCRLF#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true#允许提交包含混合换行符的文件
git config --global core.safecrlf false#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

P.S.S. git config 有三个作用域system,globe,local。优先级是local>globe>system。剩下的以后在研究

本文转载自:http://www.luckyonecn.com/blog/git-auto-crlf-problem/

游鱼彩虹
粉丝 9
博文 35
码字总数 2137
作品 0
荆州
程序员
私信 提问
[git] warning: LF will be replaced by CRLF | fatal

遇到这两个错误, 基本上都是叫你将 autocrlf 设置为 false. 但是我觉得这样很不妥。 如果你的源文件中是换行符是LF,而autocrlf=true, 此时git add就会遇到 fatal: LF would be replaced by...

jerry__sun
2015/06/18
0
0
git 提示换行符LF 或者 CRLF

windows中的换行符为 CRLF, 而在linux下的换行符为LF 解决: //禁用自动转换 参考:http://stackoverflow.com/questions/5834014/lf-will-be-replaced-by-crlf-in-git-what-is-that-and-is......

小寶
2016/07/06
24
0
GitHub 第一坑:换行符自动转换

原文出处: CSS魔法 源起 一直想在 GitHub 上发布项目、参与项目,但 Git 这货比较难学啊。买了一本《Git 权威指南》,翻了几页,妈呀,那叫一个复杂,又是 Cygwin 又是命令行的,吓得我不敢...

首席安全砖家
2013/08/19
1K
12
Git 技巧 | 你有认真对待过换行符吗?

我猜点进来看的客官,至少都是使用过 Git 的。另外有些客官,可能知道,如果 Git 的换行符处理不当,就会产生某些问题。还有一些客官,也许正在忍受由于换行符处理不当所带来的各种问题。如果...

曲直先生
2018/05/12
0
0
git操作初始化

1、选择新建的目录,右键鼠标,选择GIT_BASH,使用命令行界面,按照下面操作步骤: $ git config --global user.name "tang.by" 代码提交时的用户名,与gerrit注册用户名建议保持一致 $ git ...

心中的理想乡
2016/05/17
10
0

没有更多内容

加载失败,请刷新页面

加载更多

再一次生产 CPU 高负载排查实践

前言 前几日早上打开邮箱收到一封监控报警邮件:某某 ip 服务器 CPU 负载较高,请研发尽快排查解决,发送时间正好是凌晨。 其实早在去年我也处理过类似的问题,并记录下来:《一次生产 CPU ...

crossoverJie
15分钟前
1
0
Java的线程同步和并发问题示例

并发问题 多线程是一个非常强大的工具,它使我们能够更好地利用系统的资源,但我们需要在读取和写入多个线程共享的数据时特别小心。 当多个线程尝试同时读取和写入共享数据时,会出现两种类型...

hiuh
今天
4
0
Spring Boot 常用注解说明

实体类 @Entity (实体类注解) @Table(可指定表名) @Data(可缺省get/set) @Id (指定属性主键) @GeneratedValue(指定主键生成规则)

兜兜毛毛
今天
3
0
局域网能互相ping通,ubuntu虚拟机不能上外网

【问题】 桥接模式老是无法上网,查看本机IP发现被分配了一个私网地址,猜测应该是虚拟DHCP服务器没有打开,于是查看Ubuntu的网络配置: /etc/network/interfaces 发现没有dhcp配置的信息,只...

tahiti_aa
今天
2
0
以太坊助记词PHP开发包简介

以太坊助记词PHP开发包用来为PHP以太坊应用增加助记词和层级确定密钥支持能力。下载地址:以太坊助记词php开发包 。 1、开发包概述 以太坊助记词PHP开发包主要包括以下特性: 生成符合BIP39...

汇智网教程
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部