- CR (Carriage Return) 表示<回车>
- LF (Line Feed) 表示<换行>
1. 不同系统的行结束符
系统名称 | 行结束符 | 意义 | 释义 | git line endings选项 |
---|---|---|---|---|
DOS / Windows | \r\n | CRLF | '\r'是使光标移动到行首 '\n'是使光标下移一行 | Windows-style |
MacOS | \r | CR | return | As-is |
UNIX / Linux | \n | LF | newline | Unix-style |
2. 安装git时的三个选项
在学习git软件,安装git到configuring the line ending conversion时,有三个选项。
a. Checkout Windows-style,commit Unix-style line endings.(签出CRLF,提交签入是LF)
b.Checkout as-is,commit Unix-style line endings.(签出CR,提交签入是LF)
c.Checkout as-is,commit as-is line endings. (签出CR,提交签入是CR)
这里面讲到了做两个操作(Checkout,Commit)的三种处理line endings的操作(Windows-style,Unix-style,As-is)。
3. git软件的 line ending和操作系统的对应关系
-
CRLF->Windows-style
-
LF->Unix Style
-
CR->Mac Style
4. 如何转换git的行尾结束符(line ending)
- 签入和签出是针对代码管理工具来说的,签出是在本地获取最新代码,签入是将最新代码上传到代码管理工具中
- 控制git的行尾结束符的是
core.autocrlf
的配置 - core.autocrlf 的值有三个
true
false
inout
,- true: 添加到git仓库时,将把所有CRLF行结尾都变成LF If core.autocrlf is set to true, that means that any time you add a file to the git repo that git thinks is a text file, it will turn all CRLF line endings to just LF before it stores it in the commit.。
- false:不会执行换行转换,按原样签入 If core.autocrlf is set to false, no line-ending conversion is ever performed, so text files are checked in as-is. This usually works ok。
- input:添加到git仓库时,将会把CRLF转换成LF。当有人Checkout(签出)代码时还是lf方式。因此在window操作系统下,不要使用这个设置
- core.autocrlf 三个值的直观变化
- true: x -> LF -> CRLF
- input: x -> LF -> LF
- false: x -> x -> x
file to commit -> repository -> checked out file
要提交的文件->存储库->签出的文件
5. git 常用的配置命令
- git config -l 查看已配置的内容
- git config --global core.autocrlf true 修改 core.autocrlf 的值,需要在项目的根目录进行修改