Git core.autocrlf行尾默认设置

50

我正在尝试弄清楚在Git中,如果用户没有更改设置,core.autocrlf的默认值是什么。

我查看了文档,但找不到这个信息。你能告诉我正确的方向吗?

具体来说,在进行从Windows系统提交到版本库时,对于一个新的Git安装,Git是否会自动将Windows行结束符转换为Unix行结束符?

谢谢!


4
https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration 的文档列出了三个选项,但没有说明哪一个是默认值。在我的 Ubuntu 干净安装中,运行 git config --list 没有显示 autocrlf 条目,运行 git config --get autocrlf 返回 error: key does not contain a section: autocrlf,因此我正在发布悬赏。很可能这意味着默认值为假(false),但最好确认一下。 - user56reinstatemonica8
5个回答

52

查看git源代码,默认情况下core.autocrlf属性设置为false。(自从该属性在2007年2月13日引入时就是这样,尽管它已经从静态值转换为常量。)

Windows安装程序确实需要您选择一个值来显式地设置git系统配置中的此属性。


10
实际上它并没有设置在“系统配置”中,而是设置在(Windows特定的)异常ProgramData配置文件中。这个文件充当一种“所有用户”或“所有应用程序”的设置文件(它可以被多个git应用程序共享),位于“\ProgramData\Git\config”。在命令行中没有访问它的标志。 - Tom
对我来说,这是在 C:\Users{myusername}\AppData\Local\Programs\Git\etc 的 gitconfig 文件中。 参见:https://dev59.com/YVwY5IYBdhLWcg3wPVtS#42934458 - KevinVictor

13

很难找到明确的说明,但我通过试错发现:

  • 默认值为“false”

  • Windows安装程序会让你选择所需的行为,但默认情况下(如果你在不更改建议设置的情况下安装),它将其设置为“true”。这不是软件的默认设置,而是安装程序设置的core.autocrlf系统设置。

“false”表示不处理行尾 “true”表示以LF格式检入并根据系统检出(在Windows上为CRLF,在Unix上为LF)。

当同时使用Unix和Windows时,建议在Unix上使用“false”(因为自动转换可能会破坏一些看起来像文本文件的二进制文件,并且Unix始终使用LF),在Windows上使用“true”(否则,仓库就会充满引起兼容性问题的CRLF)。


1
您可以通过输入此命令来列出所有配置键值。
git config --list

而且我看到默认值是

core.autocrlf=true

虽然这是我在安装 Git for Windows 时选择的设置(或者更准确地说是“未更改”)


3
git config --list 仅显示已明确设置的值。目前似乎没有方法可以获取 git 配置选项的默认值。有关详细信息,请参见此答案 - waldyrious
@waldyrious 如果它没有被明确设置怎么办?如果它总是默认显式设置并且自那时以来没有被设置,那么这将起作用。例如,我从未设置过autocrlf,但我在那里看到它列出了一个值,因此这是我的git安装中的默认值,core.autocrlf=true。 - barlop
1
为什么会有踩票?我刚刚检查了一下,这确实是事实(git版本2.15.0.windows.1)。如果我删除全局的.gitattributes,则git config --list会显示core.autocrlf=true。如果我将其设置为false,那么这个新设置将出现在输出的最后一行,从而覆盖默认设置。 - user2061057

-1
除了想知道软件默认设置外,您还可以针对每个仓库进行不同的配置。
因此,找出您的配置和/或确认所需的行为最有用的方法是运行: git config core.autocrlf

对我来说,这个命令没有输出任何内容,因为还没有设置任何东西。那有什么作用呢? - eis
我修改了我的回答,以更清楚地表达我的意思。根据被接受的答案,如果未设置任何内容,则可能为false。 - teebszet

-1
如果您正在使用最新的Git窗口安装程序,则core.autoclrf的默认选项为false。

这不是真的,至少在带有Git Bash的git 2.15.0.windows.1上不是。 - user2061057

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接