Git换行符检查CRLF与LF

技术文档网 2021-04-19
遇到的问题

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

相关文章

  1. 代码无法更新问题处理办法

    在本地维护代码时,经常要git pull一下以便拉取最新的代码 但是,有时候改了本地的文件,git pull的时候提示错误 可以酱紫操作: 强制覆盖本地文件(改完可能会导致本地配置信息被覆盖) git

  2. Git换行符检查CRLF与LF

    遇到的问题 在 git 提交或是签出时,提示如下问题:[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replace

  3. 使用git和GitHub完成考核任务

    Git 是自由开源的分布式版本控制系统。 GitHub 是使用 Git 进行版本控制的代码托管平台。 准备工作 你需要在系统上安装 git 来管理工作区。 Ubuntu $ sudo apt up

  4. 如何防止新Feature把线上搞挂?

    除非恶意代码,比如说在一个死循环中不停的分配内存,否则服务不是那么容易挂掉的。 开发一个新的Feature通常会经历如下流程进行把关:1、有单元测试、自动化测试和性能测试来保证代码质量。2、每个大

  5. 如何更新自己Fork的代码

    以用户appframe为例子: 注意事项:在更新自己Fork的代码之前,需要先把自己在本地的更改进行提交。 1、检出自己在github上fork的APDPlat分支(如果已经从netbenas中检出了

随机推荐

  1. 代码无法更新问题处理办法

    在本地维护代码时,经常要git pull一下以便拉取最新的代码 但是,有时候改了本地的文件,git pull的时候提示错误 可以酱紫操作: 强制覆盖本地文件(改完可能会导致本地配置信息被覆盖) git

  2. Git换行符检查CRLF与LF

    遇到的问题 在 git 提交或是签出时,提示如下问题:[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replace

  3. 使用git和GitHub完成考核任务

    Git 是自由开源的分布式版本控制系统。 GitHub 是使用 Git 进行版本控制的代码托管平台。 准备工作 你需要在系统上安装 git 来管理工作区。 Ubuntu $ sudo apt up

  4. 如何防止新Feature把线上搞挂?

    除非恶意代码,比如说在一个死循环中不停的分配内存,否则服务不是那么容易挂掉的。 开发一个新的Feature通常会经历如下流程进行把关:1、有单元测试、自动化测试和性能测试来保证代码质量。2、每个大

  5. 如何更新自己Fork的代码

    以用户appframe为例子: 注意事项:在更新自己Fork的代码之前,需要先把自己在本地的更改进行提交。 1、检出自己在github上fork的APDPlat分支(如果已经从netbenas中检出了