Git 换行符检查 CRLF 与 LF

Git 换行符检查 CRLF 与 LF

遇到的问题

在 git 提交或是签出时,提示如下问题:
[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
上面的问题主要反映在 Mac\Linux 系统结束符 LF 与 Window 结束符 CRLF 跨平台协作的问题。

Git 换行符检查与转换

Window 使用回车和换行两个字符来结束一行,Mac\Linux 只使用换行符结束一行。
在使用 Git 管理项目代码版本时,Git 提供了一个换行符检查功能(core.safecrlf),用于提交文件时检查文件是否混用了两种风格的结束符。

core.safecrlf

core.safecrlf 用户检查是否混用换行符。
命令的格式如下:
git config --global core.safecrlf [false|warn|true]
参数说明:

false:不做任何检查
warn:在提交时检查并警告
true:在提交时检查,如果发现混用则拒绝提交

建议使用最严格的 true 选项。初步开始不熟悉的情况下,可以使用 warn 作为参数。

core.autocrlf

core.autocrlf 用于 CRLF 与 LF 之间的转换。
命令的格式如下:
git config --global core.autocrlf [true|input|false]
参数说明:

false:不进行转换
input:在提交时,把 CRLF 转换成 LF;签出时不转换
true:提交时,把 CRLF 转换成 LF;签出时把 LF 转换成 CRLF

git config --global core.autocrlf true
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF。

git config --global core.autocrlf input
Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换。

git config --global core.autocrlf false
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中。

解决方法

当碰到最初提示的两个问题时,上述设置也许只是解决问题前的知识辅助,问题的病症还是在混用了两种风格的结束符,或是在两个平台间协作,结束符没有做同一。
要从根本上解决为还是要统一结束符。平时在用 git status 查看文件状态时,发现整个文件没修改,但是 git diff 提示整个文件整体改动了。这个问题就是由两种风格的结束符导致。
这时最好都同一为 LF 风格。
如果安装了 Notepad++,采用如下步骤:
1)打开提示错误的文件;
2)点击 Edit->EOL Conversion 选择需要转换到的格式,如 UNIX 格式。

Git 换行符检查 CRLF 与 LF

crlf-format.png

如果文件设计太多,那么如果你的 IDE 支持整体格式变更那就非常方便。如我采用的是 phpstrom ,只需选中文件根目录,然后点击 Line Separators -> LF - Unix and OS X(\n) 即可整个文件转换结束符。

Git 换行符检查 CRLF 与 LF

crlf-format-phpstrom.png

链接:https://www.jianshu.com/p/bc001c107dfe

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112438.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • scope 前缀开头的方法

    scope 前缀开头的方法

  • 2020年开始,中国程序员前景一片灰暗,是这样吗?[通俗易懂]

    2020年开始,中国程序员前景一片灰暗,是这样吗?[通俗易懂]背景:汇总了下老王在其他平台的原创回复,欢迎关注老王原创公众号【软件老王】,关注不迷路。1、感觉中国程序员前景一片灰暗,是这样吗?老王观点:(1)个人认为谈不上灰暗,过去十年是互联网快速爆发的十年,每个行业发展了一定程度,都会慢慢趋于平稳,软件行业也不例外。(2)其实最近也有这种感觉,感觉软件行业比以前难做了,随着政府推动的互联网+,软件行业已经进入各行各业,认为后面可能会像美国一样,成为一个基础行业,待遇和机会也会趋同于其他行业,但是不知道能不能像美国那样,到50多岁了还能写的上代码。(3

    2022年10月11日
  • Pycharm 字体大小及背景颜色的设置

    Pycharm 字体大小及背景颜色的设置设置Pycharm的字体大小及背景颜色Pycharm设置字体的大小及风格选择File–>setting–>Editor–>Font,我们可以看到如下图所示界面,我们就可以根据自己的喜好随意调整字体的大小,字体的样式风格,文字行间距,设置之后的的效果在下面的窗口可以实时预览,调整和设置都比较方便。Pycharm设置背景颜色选择File–>…

  • nginx面试常见问题_面试官应该问哪些问题

    nginx面试常见问题_面试官应该问哪些问题1.什么是Nginx?Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器目前使用的最多的web服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用2.为什么要用Nginx?优点:*跨平台、配置简单*非阻塞、高并发连接:处理2-3万并发连接数,官方…

  • iOS开发中touchesBegan和touchesEn…「建议收藏」

    iOS开发中touchesBegan和touchesEn…「建议收藏」touchesBegan跟touchedEnd沒有提供給UIScrollViewDelegate所以要自己建立一個繼承自UIScrollView的class重寫這兩個methodmyScrollView.h@interface myScrollView : UIScrollView @end myScrollView.m-(void) touchesBegan:(NSS

  • js中splice方法_js删除数组中指定元素

    js中splice方法_js删除数组中指定元素数组对象splice方法:arr.splice(1,1);这种方式数组长度相应改变,但是原来的数组索引也相应改变

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号