团队协作开发中, 使用Windows系统电脑的朋友,在提交代码到Git版本库时,是否遇到过关于CRLF、LF的警告!

一、关于CR、LF和CRLF

敲下回车键,不同的操作系统保存到文件中的值不同,换行符的表示也不同。

表示

描述

保存到文件中的值

操作系统

CR

回车

\r

Mac OS

LF

换行

\n

Linux、Unix、Mac OS X

CRLF

回车换行

\r\n

Windows

问题:在团队协作开发中,开发人员若使用不同的操作系统,当使用Git协同开发同一个项目时,就会出现换行符不统一的问题。

二、Git会自动转换换行符

Git为了解决上面提出的问题,会自动对换行符进行转换。

转换方案

提交时

拉取时

说明

方案一

CRLF转换为LF

LF替换成CRLF

Windows系统推荐使用,在Windows上安装git的时候,默认是使用这个方案

方案二

CRLF转换为LF

不进行转换

Linux、Unix、Mac OS和Mac OS X推荐使用,在Unix或类Unix操作系统上安装git,默认使用这种方案

方案三

不进行转换

不进行转换

这种方案对于跨平台项目不推荐使用

若不使用方案三,那么在Git仓库(包括本地仓库和GitHub远程仓库)中保存的文件的换行符就都是LF表示的。

三、自定义换行符转换方案

在开发过程中,可以设置Git的换行符转换方案。

1、Git的全局配置(autofrlf、safecrlf)

设置autoclf属性,在控制台直接运行如下的一条命令:

// 提交时转换为LF,检出时转换为CRLF

git config --global core.autocrlf true

// 提交时转换为LF,检出时不转换

git config --global core.autocrlf input

// 提交检出均不转换

git config --global core.autocrlf false

上述命令运行之后,会修改.gitconfig文件。

一般在项目中,为了避免项目中同时出现CRLF和LF,还可以开启safecrlf检查。

// 拒绝提交包含混合换行符的文件 (一般设置为true)

git config --global core.safecrlf true

// 允许提交包含混合换行符的文件

git config --global core.safecrlf false

// 提交包含混合换行符的文件时给出警告

git config --global core.safecrlf warn

上述命令运行之后,也会修改.gitconfig文件。

2、单一仓库统一配置(.gitattributes文件)

参考:https://git-scm.com/docs/gitattributes

注意:.gitattributes是针对一个单一的仓库的,也就是说每一个代码仓库都可以包含一个.gitattributes文件。这种方式设置之后,不需要一个项目组里面的同事分别再去修改自己电脑的git的全局配置。

这种方法是针对某个仓库进行换行符的统一配置,即时你已经进行了全局配置。

这个文件必须位于仓库的根目录,可以像其他文件一样修改、提交

对于通过.gitattributes设置换行符的转换方案,可以使用如下的命令:

1)text=auto:采用git认为最好的方式来处理文件,未在.gitattributes中设置的项默认按照这种方式处理。git发现是文本文件,那么在checkin的时候,会将文件结尾符转换为LF。如果文件已经被以CRLF的形式提交,不会有任何转换。(就是说已经在Git仓库中的文件,如果结束符是CRLF,不会有任何的转换)

2)-text 表示让git在checkin以及checkout的时候,对end-of-line不做任何转换。

3)text 表示在checkin的时候会被转换为LF(在repository中的文件结束符是LF),如果需要控制在checkout的时候的换行符,需要结合eol进行设置(也就是控制working tree中的文件的结尾符,需要通过eol设置)。 text=auto和text的区别在于,text=auto由git来确定是不是文本文件,从而进行转换;而text表示,你确定这个path就是文本文件,会直接对这个path进行转换,而不是由git来decides是否转换。

4)如果没有指定text,git会使用全局配置中的core.autocrlf来进行eol的转换。core.autocrlf需要自己在自己的电脑上进行配置。

5)eol=crlf:对左边匹配的文件统一使用CRLF换行符格式,如果有文件中出现LF将会转换成CRLF;也就是说,在checkin和checkout的时候,文件中都是CRLF,LF会被转换为CRLF。

6)eol=lf:对左边匹配的文件统一使用LF换行符格式,如果有文件中出现CRLF将会转换成LF;也就是说,在checkin和checkout的时候,文件中都是LF,CRLF会被转换为LF。

7)binary: 告诉git该文件为二进制,防止git修改该文件。git不会对其中的换行符进行改变。

注意:.gitattributes文件必须在提交之后才能生效。

crlf换行 idea_Git中换行符(CRLF、LF和CR)的转换相关推荐

  1. python中换行符怎么写_python3中换行 python中换行符怎么写

    英文换行格式规定? 可以断开连接.即使是有趣的单词,也可以加上连字符"-",然后断开连接 \n是回车和换行符,即光标移动到下一行,并从下一行输入和输出.这和新线效应是一样的.\r只 ...

  2. crlf换行 idea_git 换行符LF与CRLF转换问题

    git 换行符LF与CRLF转换问题 一.背景 在各操作系统下,文本文件所使用的换行符是不一样的.UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来 ...

  3. pycharm批量修改文件换行符CRLF为LF

    背景 在win系统配置远程SSH解释器, 并同步文件后, 导致所有文件换行符全变为CRLF, Git Commit时发现Changelist有很多文件, 那么怎么全部换回来LF呢? 解决方案 (1) ...

  4. 回车换行符 crlf 那点事

    不同的操作系统回车换行符定义是不一样的,如果你跟我一样记不住,crlf几个字段的含义的话,记录下来就非常有必要了 win        \r\n  CRLF ASCII 13 carriage ret ...

  5. Git最好的CRLF(回车,换行)处理策略是什么?

    我尝试使用CRLF结束行提交文件,但失败了. 我花了整整一天的时间在我的Windows计算机上尝试不同的策略,几乎被迫停止尝试使用Git而是尝试使用Mercurial . 每个答案只能分享一个最佳实践 ...

  6. c语言中不用换行读符而直接换行,C语言中换行符与回车符的区别

    1.C 语言中换行符与回车符的区别能不能说"换行符就是输入完一行内容后,光标转到下一行的起始位置",而"回车符就是输入完一行后光标转到该行的起始位置,其并不换行" ...

  7. c语言中换行符与回车符的区别,C语言中换行符与回车符的区别

    本文章详细介绍了回车与换行符的由来和区别.讲解,通俗易懂,可以使自己深入理解它们 C语言中换行符与回车符的区别 能不能说"换行符就是输入完一行内容后,光标转到下一行的起始位置",而 ...

  8. mysql如何替换字符串中换行符及回车符

    mysql如何替换字符串中换行符及回车符 mysql如何替换字符串中换行符及回车符 替换字符串中回车符 update mscto.table set bodyhtml= replace(bodyhtm ...

  9. java中换行符_Java代码中的换行符有哪几种?区别是什么?

    近年来学习java的人是越来越多,毕竟市场上的需求特别的大,但是在学习Java编程的时候,大家是不是会与代码打交道,我们大家也都知道,我们上学的时候写的笔记是不是一行一行的呢?代码也是但是做程序的人都 ...

最新文章

  1. ICML2020 | Retro*: 通过神经引导的A*搜索学习逆合成设计
  2. 卷积层计算量(FLOPS)和参数量的计算
  3. python读取文件多行内容-python 逐行读取文件的几种方法
  4. 简单的横向ListView实现(version 3.0)
  5. centos 6.5 关闭防火墙
  6. 【LeetCode从零单排】No 3 Longest Substring Without Repeating Characters
  7. 电工杯:电动汽车的充放电优化(有数据代码下载链接)
  8. Vue3 --- 在Main.js引入封装的axiosAPI 方法
  9. 近期计算机视觉竞赛汇总—总奖池高达344万人民币
  10. CentOS 7忘记root密码解决办法
  11. opencv android 车牌,OpenCV + Android +车牌号识别
  12. MFC简单的登入界面设计
  13. 今日发现一个挺好的软件,控制音量 App音量控制(App Volume Control)v2.17 安卓版
  14. 网站Banner的代码
  15. 简单通过微信公众号获取OPEN ID
  16. 游戏盾是什么/为什么app会被攻击
  17. 互联网乱弹之毒在何方?
  18. ios app 解决微信扫二维码不能跳转问题
  19. Java语法知识总结
  20. 应聘时被问到「你的期望薪资是多少」,怎样回答才是最合理的呢?

热门文章

  1. 微信个人网页版API的微信机器人
  2. Java的常量,main快捷方式以及输出语句的快捷方式
  3. Python3爬虫增加点击量(慎用)
  4. express模板引擎 html,Express新手入坑笔记之动态渲染HTML
  5. 山东理工大学pta程序设计---实验七函数 知识点+题目
  6. android添加或修改默认来电、短信、闹钟、提示音铃声
  7. 【实战教程】微信卡券消息处理
  8. 如何使用传统图像处理方法进行石头检测
  9. Centos 7 简单的dns配置
  10. MEXGroup:成功的交易=90%的交易内功+10%的交易技术