【问题标题】:Git Line Endings problem on a Windows shared volume with a Unix docker container带有 Unix docker 容器的 Windows 共享卷上的 Git Line Endings 问题
【发布时间】:2020-10-26 17:17:09
【问题描述】:

我在 Windows 上工作,并使用 centOS docker 容器进行开发。我的容器和本地文件夹之间也有一个共享卷。

问题是:当将存储库从 windows 克隆到共享卷或从容器克隆到共享卷时,git status 在容器和本地计算机上执行时不会返回相同的内容。我希望它是相同的并尝试了不同的配置但没有成功:

  • git config --global core.autocrlf true/input/false 在本地机器和容器中
  • git config --global core.crlf true/false/auto 在本地机器和容器中
  • git config --global core.eol lf ...

是否有人拥有正确的 Git 配置,可以在不修改 .gitattributes 的情况下从容器和本地机器上获得相同的 git status

【问题讨论】:

  • 跨操作系统共享存储库必然涉及git status 重新读取每个文件,即使您解决了此问题。

标签: windows git docker unix line-endings


【解决方案1】:

配置行尾的方式是:

在 Linux 上:

git config --global core.autocrlf input

在 Windows 上:

git config --global core.autocrlf true

您还可以设置特定于存储库的配置:

cd /path/to/repo
git config core.autocrtlf <value>

在您的情况下,听起来如果您在 CentOS 容器中设置 git config --global core.autocrlf input 并为 Windows 机器设置 git config --global core.autocrlf true,您应该不会有问题。

【讨论】:

  • 我设置了选项,但之后仍然得到不同的结果:git clone &amp;&amp; git status。我假设“红色文件”是行尾错误的文件。所以我不明白为什么要修改它们。也许错误的配置? ://
  • 您是否完全按照我的建议设置选项?
  • 是的。可以肯定的是,我删除了所有可能干扰配置并运行您的配置的内容。然后,我将存储库克隆到 centOS 容器和 git status 中,一切都很好。回到 Windows,git status 在与容器共享的卷中,一些文件是红色的。它们是二进制文件,所以我认为它们是由 git 修改的,但我希望情况并非如此。一种方法是修改 .gitattributes 但我不能。
  • 哦!它们是二进制文件!这改变了一切。你没有在你的问题中提到这一点。二进制文件依赖于操作系统。所以这不是行尾问题,在 Git 设置中您无能为力。
  • 因此,来自 git-config 手册页:“不幸的是,清理具有混合行尾的文本文件的预期效果和损坏二进制文件的不良效果无法区分”,所以是的,我将使用 WSL,直到可以修改 .git 属性。我会将您的帖子标记为答案。感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2016-03-13
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
相关资源
最近更新 更多