是否有文件或菜单可以让我更改如何处理行尾的设置?

我了解到有3个选项:

签出Windows样式,提交Unix样式Git将在签出文本文件时将LF转换为CRLF。什么时候提交文本文件时,CRLF将转换为LF。对于跨平台项目,这是Windows上的建议设置(“core.autorlf”设置为“true”)按原样签出,提交Unix样式Git在签出文本文件时不会执行任何转换。提交文本文件时,CRLF将转换为LF。对于跨平台项目这是Unix上的推荐设置(“core.autorlf”设置为“input”)。按原样签出,按原样提交Git在签出或提交时不会执行任何转换文本文件。跨平台不建议选择此选项项目(“core.autocrlf”设置为“false”)


当前回答

.gitattributes文件

最简单的方法是在repo中使用本地.gitattributes文件。

您还可以更改特定文件扩展名的行尾

*           text=auto     # auto
*.txt       text
*.vcproj    text eol=crlf # windows line-endings
*.sh        text eol=lf   # linux line-endings
*.jpg       -text

这也覆盖了全局默认值,因此它更易于移植,并使回购在不同的机器上更可靠。

其他回答

控制这一点的正常方法是使用git-config

例如

git config --global core.autocrlf true

有关详细信息,请在这个链接中向下滚动到Pro Git的名为“core.autocrlf”的部分


如果您想知道保存在哪个文件中,可以运行以下命令:

git config --global --edit

git全局配置文件应该在文本编辑器中打开,您可以看到该文件是从何处加载的。

对于可以重新分发给所有开发人员的存储库设置解决方案,请查看.gitattributes文件中的文本属性。这样,开发人员就不必在存储库上手动设置自己的行尾,而且因为不同的存储库可以有不同的行尾样式,所以全局core.autocrlf不是最好的,至少在我看来是这样。

例如,在给定路径[.-text]上取消设置此属性将强制git在签入和签出时不接触行尾。在我看来,这是最好的行为,因为大多数现代文本编辑器都能处理这两种类型的行尾。此外,如果您作为开发人员仍然希望在签入时进行行尾转换,您仍然可以设置路径以匹配某些文件或在存储库中设置eol属性(in.gitattributes)。

还可以查看这篇相关文章,其中更详细地描述了.gitattributes文件和文本属性:Git的最佳CRLF(回车、换行)处理策略是什么?

操作系统中使用的行尾格式:

Windows:CR(回车)和LF(换行)对OSX,Linux:LF(换行\n)

我们可以通过两种方式将git配置为自动更正每个操作系统的行尾格式。

Git全局配置使用.gitattributes文件

全局配置

在Linux/OSX中

git config --global core.autocrlf input

这将在提交时将任何CRLF修复为LF。

在Windows中

git config --global core.autocrlf true

这将确保当您在窗口中签出时,所有LF都将转换为CRLF。

.gitattributes文件

保留.gitattributes文件是个好主意,因为我们不希望团队中的每个人都设置自己的配置。此文件应放在存储库根目录和中。如果它存在,git将尊重它。

* text=auto

这会将所有文件视为文本文件,并在签出时自动转换为OS的行结束,在提交时自动转换回LF。如果要显式指定行尾,可以使用:

* text eol=crlf
* text eol=lf

第一个用于签出,第二个用于提交。

*.jpg binary

这将把所有.jpg图像视为二进制文件,而不考虑路径。因此不需要转换。

或者可以添加路径限定符:

my_path/**/*.jpg binary

对我来说,运行命令的诀窍是什么

git config auto.crlf false

在项目的文件夹中,我希望它专门用于一个项目。

该命令通过添加以下行更改了路径{project_name}/.git/config(fyi.git是一个隐藏文件夹)中的文件

[auto]
    crlf = false

在文件末尾。我想更改文件也会有同样的效果。

对于Windows中的“按原样签出,按原样提交”选项:

git config --global core.autocrlf false

这根本不会修改行尾。