linux - 如何在虚拟机的主机-来宾文件系统上使用 Git 工作树
问题描述
我在 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 或 Linux 的 Windows 子系统下建立工作树并共享它。这仍然会导致 Linux VM 上不存在的路径,但是可以创建一个从/cygdrive/c
或/mnt/c
到的符号链接/mnt/hgfs/WindowsDriveC
,然后其余的东西就可以工作了。
另一种选择是使用 Windows Subsystem for Linux,这意味着您可以在不离开 Windows 的情况下进行编译并生成 Windows 二进制文件。您将生成 Linux 二进制文件,但不必担心与 VM 共享。不过,工作树需要在 WSL 下创建。
最后一个选项是编辑工作树中的.git
文件以使用主存储库的相对路径。这是不受支持的,可能会中断,但它可能再次满足您的需求。为此,请务必使用正斜杠。
推荐阅读
- arrays - Swift 4 排序多维数组
- wordpress - 有什么方法可以在我的 WordPress 网站上显示 WooCommerce 迷你购物车?
- javascript - 将选项值转换为链接 - Javascript
- python - 即使 gzip 压缩的文件相同,Python 2.7 filecmp.cmp 也会返回 false
- python - 将应用程序窗口设为最顶层(活动)窗口
- macos - Mac OSX Server - 应用到附件功能
- sql-server - RDS 实例存储已满
- delphi - 在新记录中自动获取 customer_id
- javascript - 使用 jquery 为输入字段设置值未设置为输入字段的模型
- memory - 一个内存地址通常保存多少字节?