gpt4 book ai didi

windows - "git checkout --patch"与 autocrlf=true 不兼容吗?

转载 作者:可可西里 更新时间:2023-11-01 10:12:07 25 4
gpt4 key购买 nike

在我的 Windows 机器上,我正在考虑在我的 .gitconfig 中设置 autocrlf = true。我团队中的其他人以这种方式设置,我们最终在 repo 中混合了 lfcrlf。我考虑了几个选项,这似乎是阻力最小的路径...

我注意到的一件事是当 autocrlf = truegit checkout -p 失败并显示错误 patch does not apply。如果我将其改回 false,它会按预期工作。

autcrlf = true 是否与 checkout --patch 不兼容,或者我是否需要设置一些其他选项才能使其正常工作?

有趣的是,git add --patchautocrlf = true 一起正常工作。

最佳答案

git checkout --patch 可以正确处理行尾翻译。补丁几乎肯定没有应用,因为您的配置不匹配。

您团队中的每个人都需要使用相同 行结束配置。 core.autocrlf=true 不是团队中的一个人可以启用的选项;每个人都需要相同的设置。那是因为如果您有 core.autocrlf=false,那么您就是在告诉 Git 磁盘上的内容与存储库中的内容相同。如果您使用的是 Windows,则意味着您正在 checkin 具有 Windows 样式行尾 (\r\n) 的文件。如果您的同事启用了 core.autocrlf=true,那么您就是在告诉 Git 磁盘上的内容具有 Windows 样式的行结尾,而存储库中的内容具有 Unix 样式的行结尾(\n).

但是你的同事对 git 撒了谎,因为存储库内容实际上包含 \r\n

当这些设置不匹配时,会发生各种奇怪的事情,包括无法应用补丁之类的事情。

你应该:

  1. 在您的 .gitattributes 文件中设置 * text=auto。这确保了在存储库中工作的每个人都具有相同的设置,因为配置实际上是 checkin ,而不是每个人都必须记住正确配置的东西。

  2. 重新规范化存储库,使存储库内容与您声明的内容实际匹配。您可以通过 git add --renormalize . 并检查其中的内容来执行此操作。

完成此操作后(每个人都更新了您的本地工作文件夹),您的 git apply --patch 应该会正常运行。

关于windows - "git checkout --patch"与 autocrlf=true 不兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184893/

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