Git拉取捆绑文件出现“致命错误:找不到远程引用HEAD”的错误提示。

4

我发布这个自问自答,因为我知道我的一些同事很快就会搜索到这个。我们有时需要分发捆绑文件,这些文件在主干上进行了基线处理,因此仅包含创建时明确包含的特定分支。例如,分发者执行以下操作:

git bundle create ../file.gitbundle master..feature/aunit_reporters

问题是,在接收到捆绑文件后,执行 git pull ../file.gitbundle 时出现以下错误:
fatal: Couldn't find remote ref HEAD

我已经验证了捆绑文件是可适用的,方法如下:

git bundle verify ../file.gitbundle
The bundle contains this ref:
4f969119b208b71f4893222810600862 refs/heads/feature/aunit_reporters
The bundle requires this ref:
fd9801b79b56f5dd55ab1e6500f16daf

git show fd9801b79b56f5dd55ab1e6500f16daf 正确显示所需的提交记录,而不是给出 fatal: ambiguous argument '[commit-hash]': unknown revision or path not in the working tree,这表示我没有必要的基线提交记录。

1个回答

4
git pull ../file.gitbundle feature/aunit_reporters
git pull [remote] 的第二个参数是可选的,默认为“HEAD”。无论您是否使用捆绑文件,这种情况都是如此,但通常真正的Git存储库(本地和托管)都有指向某个位置的HEAD,因此默认值有效。部分捆绑文件可能没有这个;分发者应该确实添加了HEAD,以允许常规拉取:
git bundle create ../file.gitbundle master..feature/aunit_reporters feature/aunit_reporters HEAD

很遗憾,现在你必须两次指定分支名称,否则会得到一个脱离 HEAD 的代码库,这会让接收者感到更加困惑。

解决方案是将第二个参数指定为由git bundle verify命令输出的分支之一,在你的情况下是'feature/aunit_reporters'。


1
我相信你已经找到了解决方案,但是你的答案提到了不同的分支"feature/combined_reporter",与你的问题"feature/aunit_reporters"不同。 - hultqvist
谢谢@hultqvist,确实有点混淆。自我回答后,我还学到了另一个技巧。 - TamaMcGlinn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接