繁体   English   中英

如何在虚拟机中的主客户文件系统上使用Git worktree

[英]How to use Git worktree on host-guest file system in virtual machine

我在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仓库?

通常情况下,不鼓励做这种事情,因为它可能导致损坏,并且正如您所见,Windows路径不能很好地与Linux路径一起使用。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM