如何更改行结束设置

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

我读到有三种选择:

  1. 结帐Windows风格,提交Unix风格

    Git将在签出文本文件时将LF转换为CRLF。当提交文本文件,CRLF将被转换为LF。对于跨平台项目,这是Windows上的推荐设置(core.autocrlf设置为true)

  2. 按原样签出,Unix风格提交

    Git在签出文本文件时不会执行任何转换。提交文本文件时,CRLF将转换为LF。对于跨平台项目这是Unix上推荐的设置(“core.autocrlf”设置为“输入”)。

  3. 按原样签出,按原样提交

    Git在签出或提交时不会执行任何转换文本文件。不建议跨平台选择此选项项目(“core.autocrlf”设置为“false”)

672316 次浏览

控制它的正常方法是使用git config

例如

git config --global core.autocrlf true

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


如果你想知道这是保存在什么文件中,你可以运行命令:

git config --global --edit

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

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

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

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

如果您想将已更改的文件格式从PC格式转换回UNIX格式。

(1)您需要重新安装tortoise GIT,并在“行结束转换”部分确保您选择了“按原样签出-按原样签入”选项。

(2)并保持其余配置不变。

(3)一旦安装完成

(4)将所有转换为UNIX格式的文件扩展名写入文本文件(extensions.txt)。

ex:*.dsp*.dsw

(5)将文件复制到您的克隆中在GITBASH中运行以下命令

while read -r a;dofind . -type f -name "$a" -exec dos2unix {} \;done<extension.txt

OS中使用的行结束格式:

  • Windows:CR(回车符号\r)和LF(LineFeed\n)对
  • OSX,Linux:LF(LineFeed\n

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

  1. git全局配置
  2. 使用.gitattributes文件

全局配置

在Linux /OSX

git config --global core.autocrlf input

这将在您提交时修复任何CRLFLF

在windows

git config --global core.autocrlf true

这将确保当您在Windows中结帐时,所有LF都将转换为CRLF

. git属性文件

保留一个.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

在文件末尾。我想更改文件也会使用相同的技巧。

. git属性文件

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

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

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

这也覆盖了全局默认值,因此它更具可移植性,并使存储库在不同的机器上更可靠。

下面的步骤为我工作

在根项目文件夹上添加git属性(它将对即将到来的文件有用)

* text=auto
*.tf  eol=lf*.tfvars  eol=lf*.yml  eol=lf

执行以下命令后,对已存在的文件给予支持

find ./ -type f \( -iname \*.tf -o -iname \*.tfvars -o -iname \*.md -o -iname \*.yml \) -print0 | xargs -0 dos2unix
dos2unix .gitignoredos2unix .gitattributes