使用autocrlf = true的Git可以按原样签出带有混合行结尾的文件

sdds

因此,我一直以为,在将文件检入工作目录时,使用core.autocrlf=trueGit替换所有LF结尾CRLF

Git书中

如果您使用的是Windows计算机,请将其设置为true –在签出代码时,这会将LF结尾转换为CRLF

但是,当检出带有混合行尾且core.autocrlf设置为的文件时true,我的Git版本会按原样检出该文件。

我找到了一个非常方便的GitHub存储库来测试此行为-https: //github.com/YueLinHo/TestAutoCrlf

检测结果:

  • LF带有结尾的文件(LF.txt)
    • 使用autocrlf=false:按原样签出(所有行尾均为LF
    • 使用autocrlf=trueCRLF结帐时所有行尾均更改为

到目前为止一切顺利,一切都如我所料。现在对于带有混合行尾的文件:

  • 带有混合行尾的文件(MIX-more_CRLF.txt,MIX-more_LF.txt)
    • 随着autocrlf=false:签出原样(的混合LFCRLF
    • 随着autocrlf=true:签出原样(的混合LFCRLF

为什么会这样?我还没有看到autocrlf=true不触摸带有混合行尾的文件的任何信息

我的Git设置有问题吗?在全局.gitconfig中签出后检查了在存储库文件夹中core.autocrlf运行设置,该命令返回true。没有.gitattributes文件可以覆盖设置。git config --get core.autocrlfautocrlf=true

所有测试均在Git版本上进行1.9.5.msysgit.0

编辑:在最新的msysgit版本上具有相同的行为1.9.5.msysgit.1

我最初的问题是,我设法以某种方式提交了一个混合行结尾文件,LF该文件在core.autocrlf设置为时仅包含结尾true,这意味着该文件按原样签出,但CRLF更改为提交LF我当前正在另一台计算机上工作,无法在我的msysgit版本上重现此行为。

沙绍尔姆

我要重新发布由所有者删除的答案,因为我认为它给出了最好的解释。我不知道为什么作者删除了它,我认为它是正确的,我已投票决定删除。

显然,此行为在Git中是硬编码的,并且不依赖于core.safecrlf(而且我已经对此进行了测试,即使我设置了,混合文件也不会受到影响git config core.safecrlf false

原始答案如下:


Autocrlf不会转换混合的行尾,正如git的源代码所示:

https://github.com/git/git/commit/a0ad53c18100226cb1a138cb9b3bc3615170be8f

注意此处的注释:

/* No "naked" LF? Nothing to convert, regardless. */

/* If we have any CR or CRLF line endings, we do not touch it */
/* This is the new safer autocrlf-handling */

混合行结尾转换是不可逆的,完成后,Git崩溃了。

因此,如果您想自动转换文件的行尾,最好设置一个.gitattributes文件来处理行尾。如:

LF.txt eol=lf
CRLF.txt eol=crlf

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尽管core.autocrlf = true,Git在Windows上仅签出带有LF行尾的特定文件

来自分类Dev

为什么要在Git中使用core.autocrlf = true?

来自分类Dev

使用core.autocrlf = true时文件的“ git hash-object”结果不同?

来自分类Dev

使用autocrlf = false的Git仍然会产生“警告:CRLF将被LF取代”消息

来自分类Dev

正确的git autocrlf设置

来自分类Dev

为什么Git将autocrlf报告为true?

来自分类Dev

“ git checkout --patch”与autocrlf = true不兼容吗?

来自分类Dev

为什么在core.autocrlf输出中有两行带有“ git config -l”的行?

来自分类Dev

在 Windows 上,Git 签出带有 LF 行结尾的特定文件类型

来自分类Dev

Git core.autocrlf行结束默认设置

来自分类Dev

如果贡献者对Git有autocrlf = true,则修复所有损坏的提交

来自分类Dev

可以将git配置为不对某些文件执行autocrlf吗?

来自分类Dev

如何为子模块设置git core.autocrlf

来自分类Dev

如何按原样使用文件夹内或文件夹外的所有php文件

来自分类Dev

.gitattributes:text = auto是否仍使用core.autocrlf来检测EOL

来自分类Dev

混合-在Matlab中使用.a代替带有curl的.lib文件

来自分类Dev

git status:.git / config中'core.autocrlf'的错误配置值

来自分类Dev

git config --global core.autocrlf false仍然尝试转换行尾吗?

来自分类Dev

当autocrlf为false且未指定文本时,Git仍然显示“ LF将被CRLF替换”警告

来自分类Dev

更改core.autocrlf后如何强制转换工作树文件?

来自分类Dev

带有 LF 行结尾的 Git 结帐文件

来自分类Dev

是否可以使用默认模板制作的github页面还按原样从同一存储库呈现自定义html文件?

来自分类Dev

列出名称中带有“ SALARIO”字样的目录中以“ .txt”结尾的文件,而不使用管道

来自分类Dev

尽管将core.autocrlf设置为输入,但为什么在写入工作目录时GIT不能用LF替换CRLF?

来自分类Javascript

带有jQuery $(document).ready()的google.setOnLoadCallback,可以混合使用吗?

来自分类Dev

Git签出/删除带有特殊字符的文件

来自分类Dev

我可以按原样使用 Indy10,而无需安装软件包吗

来自分类Dev

如何在没有服务器的情况下按原样使用Django模板

来自分类Dev

如何按原样复制textarea的值(使用\ n和所有其他东西)?

Related 相关文章

  1. 1

    尽管core.autocrlf = true,Git在Windows上仅签出带有LF行尾的特定文件

  2. 2

    为什么要在Git中使用core.autocrlf = true?

  3. 3

    使用core.autocrlf = true时文件的“ git hash-object”结果不同?

  4. 4

    使用autocrlf = false的Git仍然会产生“警告:CRLF将被LF取代”消息

  5. 5

    正确的git autocrlf设置

  6. 6

    为什么Git将autocrlf报告为true?

  7. 7

    “ git checkout --patch”与autocrlf = true不兼容吗?

  8. 8

    为什么在core.autocrlf输出中有两行带有“ git config -l”的行?

  9. 9

    在 Windows 上,Git 签出带有 LF 行结尾的特定文件类型

  10. 10

    Git core.autocrlf行结束默认设置

  11. 11

    如果贡献者对Git有autocrlf = true,则修复所有损坏的提交

  12. 12

    可以将git配置为不对某些文件执行autocrlf吗?

  13. 13

    如何为子模块设置git core.autocrlf

  14. 14

    如何按原样使用文件夹内或文件夹外的所有php文件

  15. 15

    .gitattributes:text = auto是否仍使用core.autocrlf来检测EOL

  16. 16

    混合-在Matlab中使用.a代替带有curl的.lib文件

  17. 17

    git status:.git / config中'core.autocrlf'的错误配置值

  18. 18

    git config --global core.autocrlf false仍然尝试转换行尾吗?

  19. 19

    当autocrlf为false且未指定文本时,Git仍然显示“ LF将被CRLF替换”警告

  20. 20

    更改core.autocrlf后如何强制转换工作树文件?

  21. 21

    带有 LF 行结尾的 Git 结帐文件

  22. 22

    是否可以使用默认模板制作的github页面还按原样从同一存储库呈现自定义html文件?

  23. 23

    列出名称中带有“ SALARIO”字样的目录中以“ .txt”结尾的文件,而不使用管道

  24. 24

    尽管将core.autocrlf设置为输入,但为什么在写入工作目录时GIT不能用LF替换CRLF?

  25. 25

    带有jQuery $(document).ready()的google.setOnLoadCallback,可以混合使用吗?

  26. 26

    Git签出/删除带有特殊字符的文件

  27. 27

    我可以按原样使用 Indy10,而无需安装软件包吗

  28. 28

    如何在没有服务器的情况下按原样使用Django模板

  29. 29

    如何按原样复制textarea的值(使用\ n和所有其他东西)?

热门标签

归档