![](/img/trans.png)
[英]KVM Virtual machine running Windows XP: How to get files from guest to host?
[英]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.