【问题标题】:Using hardlink to .git instead of git worktree使用硬链接到 .git 而不是 git worktree
【发布时间】:2021-07-25 12:08:21
【问题描述】:

Eclipse 中存在一个已知错误,导致它无法使用 git worktree。

我能想到的唯一实用的解决方法是创建从辅助(分支)工作副本到包含真实 .git 文件夹的主要工作副本的 .git 硬链接。

这种变通办法(在 Windows 平台上)可能会产生什么负面影响?

【问题讨论】:

  • 你基本上会有 2 个工作文件夹,它们都硬连线到同一个 .git 文件夹。根据您所在的文件夹,您可能会得到不正确的结果。
  • 您的第一个问题是您无法创建指向目录的硬链接。不过,您可能可以使用“连接点”(重新解析点)。解释您要实现的目标可能很有用,即为什么您不只是切换分支或使用两个单独的工作副本。
  • 只有第二个存储库克隆会更干净。即使可以硬链接目录,那也行不通——当 Lasse 说“可能得到不正确的结果”时,他的意思是“肯定会给你不正确的结果”。一个目录的工作文件对应于一个分支,而不是 git 认为已检出的分支。
  • 只是翻转脚本怎么样:给 Eclipse 真正的 .git 目录,让其他的成为工作树。 (您不希望两个工作文件夹认为它们是主文件夹。它们会相互破坏。例如,它们会共享一个索引。)
  • 大多数操作系统不会允许您创建指向目录的硬链接。

标签: git git-worktree


【解决方案1】:

您可能不想这样做。工作树包括它自己的HEAD 版本、HEAD reflog 和索引。这是必需的,因为您签出了两个独立的分支,并且您可以在每个工作树中独立于另一个暂存文件。

如果您将.git 硬链接到另一个目录,您实际上将拥有相同的HEAD,因此您将在同一个分支上。此外,您将拥有相同的索引,因此一旦您在一个目录中运行git status,在另一个目录中运行它就会导致重新读取每个文件。除此之外,如果您在一个目录中运行git add,它也会反映在另一个目录中。

因此,这可能会导致一系列不愉快,并可能导致一些存储库损坏。如果您想继续使用 Eclipse,请使用单独的克隆,或者如果您想使用工作树,则可以使用其他编辑器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 2020-04-24
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 2012-01-29
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多