757

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

我读到有3个选项:

  1. 签出 Windows 风格,提交 Unix 风格

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

  2. 按原样结帐,提交 Unix 风格

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

  3. 按原样结帐,按原样提交

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

4

7 回答 7

673

控制它的正常方法是git config

例如

git config --global core.autocrlf true

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


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

git config --global --edit

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

于 2012-05-02T18:12:26.190 回答
238

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

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

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

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

全局配置

在 Linux/OSX 中

git config --global core.autocrlf input

这将在您提交时CRLF修复任何问题。LF

在 Windows 中

git config --global core.autocrlf true

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

.git 属性文件

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

* text=auto

这会将所有文件视为文本文件,并在结帐LF时自动转换为操作系统的行并返回到提交时。如果要明确指定行结尾,可以使用:

* text eol=crlf
* text eol=lf

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

*.jpg binary

这会将所有.jpg图像视为二进制文件,无论路径如何。所以不需要转换。

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

my_path/**/*.jpg binary
于 2016-11-26T18:56:13.097 回答
38

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

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

另请查看此相关帖子,其中更详细地描述了 .gitattributes 文件和文本属性:Git 的最佳 CRLF(回车,换行)处理策略是什么?

于 2015-07-08T08:03:54.553 回答
8

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

git config auto.crlf false

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

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

[auto]
    crlf = false

在文件的末尾。我想更改文件也有同样的作用。

于 2019-10-23T09:11:23.447 回答
4

.gitattributes 文件

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

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

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

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

于 2021-06-30T01:05:16.677 回答
2

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

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

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

(3) 安装完成后

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

ex:*.dsp
   *.dsw

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

while read -r a;
do
find . -type f -name "$a" -exec dos2unix {} \;
done<extension.txt
于 2016-03-02T11:00:12.240 回答
0

以下步骤对我有用

在根项目文件夹上添加 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 .gitignore
dos2unix .gitattributes
于 2021-07-08T09:13:33.980 回答