完整教程:git换行行为差异简述;.editorconfig换行行为简述

概述

1个项目开发过程中可能有多个人参与,而大家所使用的开发环境不一定相同,有的是mac有的是windows;在没有很好的规范git配置情况下,可能会出现换行符不一致的问题;

目前mac下的换行符是LF(\n);老mac上可能是CR(\r);
windows下是CRLF(\r\n)

这就会导致mac上新建的文件(所有内容换行都是LF),在win上修改了一行代码后,在推送到远端代码仓库后会显示整个文件都修改了;但其实只改了1行代码;其原因就是换行符在搞事情;

解决方式

我这边历史项目比较混杂,所以直接把core.autocrlf设置为了false;不然历史代码一堆commit都变我了LOL

git配置中的core.autocrlf属性
Gitcore.autocrlf配置项用于控制Git如何处理换行符。以下是几种常见的配置:

1-true:提交时将CRLF转换为LF,检出时将LF转换回CRLF
2-input:提交时将CRLF转换为LF,检出时不进行转换
3-false:提交和检出时都不进行转换(默认值

#全局配置demo
git config --global core.autocrlf input
#验证配置
git config --global --get core.autocrlf
#查看所有配置;以及配置来源
git config --show-origin --list

同时建议开启crlflf混用时的提醒

#一般core.safecrlf默认值是warn;如果不是warn可以修改为warn
git config --global core.safecrlf warn

core.safecrlf其他参数
1-true: 拒绝提交包含混合换行符的文件 (会提示 Fatal:xxx)
2-false: 允许提交包含混合换行符的文件
3-warn: 提交包含混合换行符的文件时给出警告 (默认值)

.editorconfig换行行为简述

除了git在提交代码的时候会对换行进行转换,项目中的这个配置也会对换行进行转换;
不过这个配置需要配合编辑器的插件来生效;

在应用了这个配置之后,即时只修改了1行代码,也会将整个文件的换行符重置为LF
在这里插入图片描述

插件
在这里插入图片描述

.editorconfiggit的区别;
git是在checkoutpush的时候进行转换
.editorconfig则是在save的时候就进行转换了

可以通过git命令查看修改的行数

#结果中第一列是增加的行数量,第二列是删除的行数量
git diff --numstat

在这里插入图片描述

posted @ 2025-09-02 18:41  yfceshi  阅读(25)  评论(0)    收藏  举报