gpt4 book ai didi

windows - Windows 上的 Git : What do the crlf settings mean?

转载 作者:IT老高 更新时间:2023-10-28 12:29:43 27 4
gpt4 key购买 nike

我不明白 git 中与 CrLf 设置相关的复杂性:core.autocrlfcore.safecrlf

我正在团队中开发一个跨平台项目,并且希望 Windows 和 Linux 开发人员能够一起工作,而无需 git 将文件标记为仅因为行结束样式而修改。

各种设置是什么意思?选择任何选项会有什么后果?对于我的情况,最好的解决方案是什么?

是的,我知道 this question并且那里的答案没有洞察力,因此没有帮助。

最佳答案

autocrlf的三个值:

  • true - 当内容进入存储库(已提交)时,其行尾将转换为 LF,当内容从存储库中出来(已 checkout )时,行尾被转换为 CRLF。这通常适用于无知的 Windows 用户/编辑器。假设编辑器(或用户)将创建带有 CRLF 结尾的文件,并且如果看到正常的 LF 结尾会吓坏,但是您希望在 repo 中使用 LF 结尾,这有望涵盖您。不过,事情可能会出错。链接问题中有虚假 merge 冲突和修改文件报告的示例。

  • input - 当内容进入存储库时,它的行尾将被转换为 LF,但内容在输出时保持不变。这基本上与 true 处于同一领域,假设编辑器实际上可以正确处理 LF 结尾;您只是在防止意外创建带有 CRLF 结尾的文件的可能性。

  • false - git 根本不处理行尾。由你决定。这是很多人推荐的。使用此设置,如果文件的行尾将被弄乱,您必须意识到这一点,因此 merge 冲突的可能性要小得多(假设知情用户)。教育开发人员如何使用他们的编辑器/IDE 几乎可以解决这个问题。如果配置正确,我见过的所有为程序员设计的编辑器都能够处理这个问题。

请注意,autocrlf 不会影响存储库中已经 的内容。如果您之前已经提交了带有 CRLF 结尾的内容,他们将保持这种状态。这是避免依赖 autocrlf 的一个很好的理由;如果一个用户没有设置它,他们可以将带有 CRLF 结尾的内容放入 repo,它会一直存在。强制标准化的一种更强大的方法是使用 text attribute ;将它设置为 auto 对于给定路径将标记它以进行行尾规范化,假设 git 确定内容是文本(不是二进制)。

一个相关的选项是 safecrlf,它基本上只是一种确保您不会对二进制文件执行不可逆转的 CRLF 转换的方法。

我在处理 Windows 问题和 git 方面没有大量经验,因此当然欢迎提供有关影响/陷阱的反馈。

关于windows - Windows 上的 Git : What do the crlf settings mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4181870/

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