gpt4 book ai didi

linux - 如何让 Linux VM(在 Windows 主机上)访问共享目录上的 git 工作文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:50 25 4
gpt4 key购买 nike

我有一台 Windows PC,在同一台 PC 上,我在 VMWare 播放器中有一个 Lubuntu VM。

我共享我的 Windows 文件夹,这样我就可以从 Lubunutu VM 中看到它们。

我的问题是,当我在 Windows 上克隆一个 Git 存储库(使用 Tortoise Git),然后尝试从 Lubuntu 访问它(使用命令行中的 Git)时,所有文件似乎都已修改,尽管我没有更改它们。

我知道这是因为 Windows 和 Linux 处理新行的方式不同。

我的问题是如何在 Windows 和 Lubuntu 上配置我的 Git 安装,这样我就不会遇到这个问题?

更新:

正如 Craig Estey 所建议的那样,这似乎不是 CRLF 问题。我尝试在我的 Linux VM 中的共享目录上克隆一个 repo,但出现以下错误:

fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.`

我在 VM 的本地驱动器上克隆相同的 repo 没有问题。

知道可能是什么原因吗?

注意:我想这样做的主要原因是让我的 VM 的驱动器大小保持较小,并尽可能使用共享驱动器。我的 VM 的本地驱动器在 SSD 驱动器上,共享驱动器在更大的 HDD 上。

最佳答案

假设您将存储库放入 Windows 共享文件夹。

挂载( Mount shared folder on Ubuntu ) Ubuntu 上的共享文件夹,因此您可以克隆该存储库。 (说你不能clone,肯定是别的问题,我测试了,对我很好。)

当你cd到该挂载的那个存储库,你看到所有文件都在 Ubuntu 上被修改,那么它应该是 EOL 问题。

在 Windows 上,autocrlf 默认为 true(假设您使用的是 Windows 版 Git)。

当您在 Windows 上克隆存储库时,将使用 CRLF EOL check out 文件。

但是,在 Ubuntu 上,autocrlf 默认为 false。在安装在 Ubuntu 上的存储库中使用 git,git 预计 EOL 是 LF。但是,EOL 仍然是 CRLF。这就是为什么 git 在 Ubuntu 上将所有文件视为已修改的原因。

要解决此问题,请确保两个操作系统都使用相同的 autocrlf 值,或使用 .gitattributes 来控制 EOL。

例如,使用假值:

在 window 上,

  1. 删除该存储库工作树中的所有文件

    (注意:如果您有本地更改,请先提交它们。)

  2. 运行 git config core.autocrlf false仅针对该存储库。或者

    • 右键单击该存储库,单击 TortoiseGit -> Setting
    • 在“设置”对话框中,转到 Git节点,选择local并取消选中 AutoCrlf
    • 应用更改
  3. 执行 git reset hard 以使用正确的 EOL 取回所有文件。

    • 打开 TortoiseGit 日志消息对话框
    • 右键单击当前分支并执行Reset "<current branch name>" to this
    • 选择“硬”选项

在 Ubuntu 上,您不应该看到所有已修改的文件。

对于使用 .gitattributes:

* -crlf

关于linux - 如何让 Linux VM(在 Windows 主机上)访问共享目录上的 git 工作文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36974074/

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