git 自动换行在WINDOWS和LINUX下的区别

Bo丶niu
  • 114

最近在windows下面最了个项目用git来管理,git add .的时候一直报错 LF will be replaced by CRLF,网上的大部分答案都是git config --global core.autocrlf false,禁用自动换行,这样做确实可以让我在这个项目中add了
clipboard.png
但是问题是,另一项目(从mac下拉的代码),做管理的时候必须要把它设置成true才可以

clipboard.png
我现在脑子有点瓦特,能不能哪位大神仔细讲一下,这个过程到底是发生了什么?

回复
阅读 5k
2 个回答

额,你是不是用的百度。。。所以你根本不知道问题的原因,这和自动换行没关系

windows 换行符:CRLF Linux/UNIX 换行符:LF
所以你windows 到 UNIX 当然需要转换回车符。

git config --global core.autocrlf false

关闭换行转换功能

git config --global core.autocrlf true

作用如下:
Git can handle this by auto-converting CRLF line endings into LF when you add a file to the index
来自官方文档

由于git最早是Linux专属的,所以换行一直是Linux的LF,如果一个项目组有Linux和Windows用户,那么换行符应该统一,当然一般文件应该统一为LF,autocrlf开启后Windows用户本地文件仍然是CR LF,提交时自动转换为LF。

ps:由于国内使用Windows的多,所以很可能把Windows专属的文件也改为LF换行,比如bat批处理脚本,这样从github下载下来的文件就丢失了CR换行符,导致无法运行。

这个设置项是多余的,一般建议关掉,由人为来保证换行符统一。而一般现在的IDE都能正常显示多种换行符风格,Windows下也能保证显示LF正常。只要不用Windows记事本编辑代码就不会出现CR LF风格的换行符。

宣传栏