如何强制使用CRLF进行Git提交?

4
如果我使用autocrlf,效果看起来就像这样。
                     push    clone
1) true:             x -> LF -> CRLF
2) input:            x -> LF -> LF
3) false:            x -> x -> x

但我想让git自动提交CRLF:
x -> CRLF (if I use LF, it will commit with CRLF)

我可以做到吗?

提前感谢!!!

编辑:我认为 git 不支持它,所以我用 crlf 强制将 lf 更改为 crlf, 可使用 crlf 工具实现。


你已经接受了正确的答案,并且始终使用core.autocrlf=false。你应该始终使用.gitattributes指令来限制EOL更改到一组文件中。core.autocrlf会不加区分地应用于所有文件。不要这样做。 - VonC
2个回答

2
您至少可以通过在.gitattributes文件中添加eol指令来确保文件正确检出:
# 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转换为CRLF。这只是为了确保您的文件以正确的行尾符进行检出。
但是,如果您想在检入时强制使用CRLF,则需要手动执行此操作。请尝试:
git config --global core.autocrlf false

请确保在任何 .gitattributes 文件中不要有任何 core.eol 或 text eol 指令(以避免任何“重新规范化”)。
对于使用错误的 eol 检出的任何文件,请进行 unix2dos 转换。
最后,添加并提交:那些带有 CRLF 的文件应该仍然带有 CRLF 进行检入。

只有当我使用CRLF时才能正常工作,我的意思是:我使用LF并提交自动更改为CRLF。谢谢。 - hong4rc
@Hongarc,你的意思是我的回答和你想要的相反吗? - VonC
我希望当我提交带有CRLF或LF的文件时,git会将其更改为CRLF。 - hong4rc
@Hongarc 好的,我已经编辑了答案以回应您的评论。 - VonC
在我提出这个问题之前,我使用了“core.autocrlf false”,但使用“unix2dos”是个好主意。因此,我使用了Node.js模块crlf。感谢您的好建议。 - hong4rc

0
你可以使用一些模块将 LF 更改为 CRLF
但我认为你不需要更改它,只需使用 autocrlf=true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接