完整教程: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属性Git的core.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
同时建议开启crlf和lf混用时的提醒
#一般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
插件
.editorconfig和git的区别;git是在checkout和push的时候进行转换.editorconfig则是在save的时候就进行转换了
可以通过git命令查看修改的行数
#结果中第一列是增加的行数量,第二列是删除的行数量
git diff --numstat


浙公网安备 33010602011771号