如何在虚拟机中的来宾客户机文件系统上使用Git工作树

时间:2019-05-05 10:42:41

标签: linux windows git virtual-machine git-worktree

我正在Windows的本地存储库中打开一个新的工作树,并且无法在Linux虚拟机中对其进行编译,因为“ .git”包含以“ C:/ Git”开头的完整路径,机器无法识别。

我有一个git存储库,经常需要在Windows和Linux上对其进行交叉编译。 我最初将存储库克隆到Windows系统中,并将“ C:”驱动器作为共享文件系统安装在虚拟Ubuntu计算机中。 通常情况下,它工作得很好。

当尝试在git中打开新的工作树时,链接的存储库没有它自己的“ .git”文件夹,而是一个到原始存储库的“ .git”文件夹的链接,并将其保存为绝对路径,格式如下:

gitdir: C:/Git/...

尝试运行时:

git rev-parse

我收到以下消息:

fatal: not a git repository: /mnt/hgfs/WindowsDriveC/Git/WorktreeDir/C:/Git/OriginalGitDir/.git/worktrees/WorktreeDir

由于这个限制,我的一些脚本失败了。

有什么办法可以“欺骗” Linux以识别完整路径并正确识别原始git repo?

1 个答案:

答案 0 :(得分:0)

通常不建议这样做,因为这可能会导致损坏,并且如您所见,Windows路径与Linux路径不能很好地配合。

不过,话虽这么说,但有两种选择。一种是在Cygwin或Windows Subsystem for Linux下设置工作树并共享。这仍然会导致Linux VM上不存在路径,但是可以创建从/cygdrive/c/mnt/c/mnt/hgfs/WindowsDriveC的符号链接,然后创建其余的符号链接。东西会起作用。

另一个选择是仅使用Linux的Windows子系统,这意味着您可以在不离开Windows的情况下进行编译并生成Windows二进制文件。您可以生成Linux二进制文件,但不必担心与VM共享。不过,需要在WSL下创建工作树。

最后一个选择是编辑工作树中的.git文件,以使用主存储库的相对路径。这不受支持并且可能会中断,但是再次满足您的需求可能会起作用。为此,请务必使用正斜杠。