gpt4 book ai didi

git - 通过 .gitattributes 强制执行 core.autocrlf=input

转载 作者:太空狗 更新时间:2023-10-29 13:03:27 26 4
gpt4 key购买 nike

有没有办法从 .gitattributes 中强制执行 core.autocrlf=input 以便在我的同事中传播该策略?

详细来说,我想要的是在添加 时转换为lf,并在 checkout 时保持原样

问题是 texteol 都没有在 .gitattributes 中做我想做的事情,因为 eol 有 3可接受的值:

  1. lf
  2. crlf
  3. 原生

理想情况下,我希望我的 .gitattributes 文件看起来像这样:

* text eol=asis

最佳答案

目前尚不清楚工作树中“按原样”的确切含义。如果您希望 Git 在存储库中以 LF 存储行结尾并让用户决定他们在工作树中想要什么(基于他们的平台和/或设置),那么使用这个:

* text

这将强制启用行尾转换,Git 会将存储库中的文件转换为 LF,并在 checkout 时尊重用户首选的行尾。如果不是所有的文件都是文本(即,你有图像或其他二进制文件)并且你希望 Git 猜测,那么你可以使用这个:

* text=auto

请注意,正如 LoopInFool 所提到的,这不会导致已经是 CRLF 的文件被转换,因此您需要确保您的文件已经在存储库中的 LF 中,或者将这些文件类型明确地列为文本(例如,*.c 文本)。

core.autocrlf=input 的行为是在添加到存储库时强制转换为 LF,而不是在 checkout 时执行任何转换;也就是说,无论用户的设置如何,始终使用 LF 结尾。如果那是您想要的行为,那么您可以通过以下方式实现:

* eol=lf

请注意,设置 eol 会有效地设置 text 属性,因此您不应在任何二进制文件上设置它。

如果您想让 Git 在 checkout 时匹配工作树中已有的行尾(例如,通过读取文件),那么它不会那样做。 Git 总是根据配置进行行结束转换,而不考虑已经存在的内容,因此用户必须以某种方式表明他们的偏好或接受平台默认行为。

此外,Git 总是将对文件大小的任何修改计为 git status 中的修改,即使它在添加时忽略了这些更改(例如,因为您只更改了行尾);这同样是不可避免的。

如果您想要的是完全不同的东西,请更详细地说明您想要的行为,我会更新更多细节。

关于git - 通过 .gitattributes 强制执行 core.autocrlf=input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com