【问题标题】:How to force git commit with CRLF?如何使用 CRLF 强制 git 提交?
【发布时间】:2018-07-08 05:51:56
【问题描述】:

如果我使用autocrlf,它看起来像这里

                     push    clone
1) true:             x -> LF -> CRLF
2) input:            x -> LF -> LF
3) false:            x -> x -> x

但我想用 CRLF 进行 git 自动提交:

x -> CRLF (if I use LF, it will commit with CRLF)

我可以吗?

提前致谢!!!

编辑:我认为 git 不支持它,所以我强制将 lf 更改为 crlfcrlf

【问题讨论】:

  • 您已经接受了正确的答案,并且始终使用 core.autocrlf=false 。您应该始终使用 .gitattributes 指令将 eol 更改限制为一组文件。 core.autocrlf 将不加选择地应用于所有文件。不要。

标签: git core.autocrlf


【解决方案1】:

您至少可以使用eol directive in a .gitattributes file 确保文件已正确签出:

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf

此设置强制 Git 在签入时规范化此文件的行尾,并在签出文件时将其转换为 CRLF。

结合git config --global core.autocrlf false 将确保您的文件在您的工作树中可用。


我希望当我使用 CRLF 或 LF 提交文件时,git 将其更改为 CRLF。

使用上面的设置,这似乎是不可能的,因为默认的规范化总是在签入时转换 LF。
这只是为了确保使用正确的 eol(行尾)签出您的文件。

但如果您想在签入时强制使用 crlf,则需要手动执行。
试试:

git config --global core.autocrlf false

确保在任何 .gitattributes 文件中没有任何 core.eoltext eol 指令(以避免任何“重新规范化”)

并对使用错误 eol 签出的任何文件执行 unix2dos

最后,添加并提交:那些带有 CRLF 的文件仍然应该用 CRLF 签入。

【讨论】:

  • 如果我使用 CRLF,它就可以工作,我的意思是:我使用 LF 并提交自动更改到 CRLF。谢谢。
  • @Hongarrc 所以你的意思是我的回答与你想要的相反吗?
  • 我想用 CRLF 或 LF 提交文件时,git 将其更改为 CRLF。
  • @洪加arc 好的。我已经编辑了答案以解决您的评论。
  • 我在问这个问题之前使用了“core.autocrlf false”,但使用“unix2dos”是个好主意。所以我使用模块节点crlf。谢谢你的好主意。
【解决方案2】:

您可以使用一些模块将LF 更改为CRLF

但我认为你不需要更改它,只需使用autocrlf=true

【讨论】:

    猜你喜欢
    • 2018-03-23
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多