git:除了生孩子我啥都会,不过这只是暂时的,未来我可能也会生孩子
这个问题一般只有在新机器上执行git
操作时会碰到,当你设置好了一般情况下不会再出现,所以有点容易忘,记一笔。
详情见官方文档,以下是原文
core.autocrlf
假如你正在 Windows
上写程序,而你的同伴用的是其他系统(或相反),你可能会遇到 CRLF
问题。 这是因为 Windows
使用回车(CR
)和换行(LF
)两个字符来结束一行,而 Mac
和 Linux
只使用换行(LF
)一个字符。 虽然这是小问题,但它会极大地扰乱跨平台协作。许多 Windows
上的编辑器会悄悄把行尾的换行字符转换成回车和换行,或在用户按下 Enter
键时,插入回车和换行两个字符。
Git
可以在你提交时自动地把回车和换行转换成换行,而在检出代码时把换行转换成回车和换行。 你可以用 core.autocrlf
来打开此项功能。 如果是在 Windows
系统上,把它设置成 true
,这样在检出代码时,换行会被转换成回车和换行:
$ git config --global core.autocrlf true
如果使用以换行作为行结束符的 Linux
或 Mac
,你不需要 Git
在检出文件时进行自动的转换;然而当一个以回车加换行作为行结束符的文件不小心被引入时,你肯定想让 Git
修正。 你可以把 core.autocrlf
设置成 input
来告诉 Git
在提交时把回车和换行转换成换行,检出时不转换:
$ git config --global core.autocrlf input
这样在 Windows
上的检出文件中会保留回车和换行,而在 Mac
和 Linux
上,以及版本库中会保留换行。
如果你是 Windows
程序员,且正在开发仅运行在 Windows
上的项目,可以设置 false
取消此功能,把回车保留在版本库中:
$ git config --global core.autocrlf false
大致总结一下
- 搞清楚两个地方的换行符分别是什么 -
本地开发
与代码托管
- 现在换行符基本就两个回车换行(
CRLF
,Windows
)与换行(LF
,Linux
和Mac
),而classic mac
用过回车(CR
)作为换行符,现在已经不使用了 - 然后考虑二者的兼容性进行相应设置
举例
-
Windows
开发时是CRLF
,服务器是Linux
的话就是LF
,这种情况需要做换行符的自动切换,即提交时CRLF
转成LF
,而迁出时LF
转成CRLF
,这点需要以下设置
$ git config --global core.autocrlf true
- 如果开发环境与服务器环境的换行符一致,都是
Windows
或Linux
(MAC
),那就可以关闭此设置(默认是不设置的,这种情况取决于你的IDE
或CMD
)
$ git config --global core.autocrlf false
后面有机会多写写git
的奇技淫巧,简直太强了