我有一个远程回购(origin
),其refs
目录包含,除了通常的heads
,tags
和remotes
子目录,也keep-around
和merge-requests
。这些是由Gitlab管理的特殊内部裁判集。
当我git ls-remote
用来询问这个仓库时,该命令列出了merge-requests
引用而不是keep-around
请求:
$ git ls-remote
5ef8f113ba35360de0dfc015601bb832bacb5505 HEAD
... lots of refs/heads/...
... lots of refs/merge-requests/...
... lots of refs/tags...
同样,我可以获取merge-requests
引用,例如
$ git fetch origin refs/merge-requests/999/head
From git.company.com:Company/company
* branch refs/merge-requests/999/head -> FETCH_HEAD
但是当我请求keep-around
参考时,远程回购声称它不存在,即使我知道它也存在:
$ git fetch origin refs/keep-around/291ad6a6bebf067377700d430ac130d758ed52e9
fatal: couldn't find remote ref refs/keep-around/291ad6a6bebf067377700d430ac130d758ed52e9
fatal: The remote end hung up unexpectedly
我没有在远程仓库中看到任何config
与此相关的东西。是什么导致了不同的行为?
附录:Meredith Howard认为这可能是Gitlab的功能;有一个特殊的Gitlab配置,可以告诉它专门隐藏refs/keep-around
。看到有类似问题的人的支持请求。
附录:有人建议这是Git的副本,通过hash获取特定的提交。我不是试图通过哈希来获取特定的提交。我想知道为什么远程回购从其清单中删除某些引用。
每个Git网站托管站点都可以通过该站点使用的任何配置机制(很可能是--system
配置文件)来隐藏其喜欢的任何引用。Git本身对此具有通用机制:transfer.hideRefs
。请参阅该git config
文档的详细信息。如果您运行自己的服务器,则可以通过这种方式进行设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句