如何获取未在git中签出的远程存储库的远程存储库

如何获取未在git中签出的远程存储库的远程存储库

有没有办法使用 来获取未签出的远程存储库的远程存储库git

我的远程 PC 上的点文件处于版本控制之下(使用yadm)。该存储库已克隆到我的本地 PC 上(也使用yadm)。但在我的本地 PC 上,我使用不同的点文件管理实用程序(rcm)这允许更大的灵活性。

由于yadmrcm在不同的基础上工作(symlinks to ~bare git into ~),我必须跳过障碍来尝试yadm在我的本地电脑上使用的东西:

  • 取消链接我当前的符号链接点文件rcm
  • 签出yadm- 存储库

要撤消该操作,我必须

  • yadm删除签出存储库时克隆的所有文件
  • 符号链接文件rcm

这很烦人。因此,我将我的存储库的本地克隆克隆yadm到另一个文件夹中。虽然我可以看到本地主yadm存储库中的所有遥控器,但我只能HEAD在克隆的yadm存储库中获取。

看起来像这样:

remote PC (1):                    commit a (old, not checked out), commit b (HEAD -> master)
local  PC - main repository (2):  commit a (HEAD -> master), commit b (origin/master, not checked out)
local  PC - other repository (3): commit a (HEAD -> master), commit a origin/master

因此,在我的存储库中,3我只能看到提交a(在存储库中签出2),但看不到提交b(未在存储库中签出2,但应该在那里可用)。我现在的问题是:如何在我的存储库中获取提交 b3以及为什么仅通过 ing 所有内容都不起作用git fetch


更新 1:对文本进行了少量编辑(希望)使问题更加清晰。

答案1

由于每个存储库都不是裸存储库,至少在重要的地方,它们不是。因此,默认行为似乎是所观察到的,即存储库 3 只能看到存储库 2 的签出提交。

要覆盖此行为,git fetch有一个可选refspec参数,可用于专门获取其他修订版本。将其映射到不同的分支可能会让这变得更容易一些。

git fetch origin b

或者由于origin/master指向 commit b,使用origin/masteras refspec 也应该有效:

git fetch origin origin/master

同样,在分支或标签上进行提交b可能会使这种获取变得更容易。如果不是这种情况,则需要通过手动指定提交的哈希来执行合并(尽管它会不是使用 ) 可见git log --all

相关内容