! 镜像git存储库后出现[remote rejected]错误
我遵循以下文档: 输出显示存储库是作为镜像推送的,但出于某些原因,我也遇到了以下错误:! 镜像git存储库后出现[remote rejected]错误,git,repository,mirror,Git,Repository,Mirror,我遵循以下文档: 输出显示存储库是作为镜像推送的,但出于某些原因,我也遇到了以下错误: ! [remote rejected] refs/pull/1/head -> refs/pull/1/head (deny updating a hidden ref) ! [remote rejected] refs/pull/1/merge -> refs/pull/1/merge (deny updating a hidden ref) 这些错误是什么?我可以假设存储库已镜像吗?如
! [remote rejected] refs/pull/1/head -> refs/pull/1/head (deny updating a hidden ref)
! [remote rejected] refs/pull/1/merge -> refs/pull/1/merge (deny updating a hidden ref)
这些错误是什么?我可以假设存储库已镜像吗?如中所述,当您镜像一个GitHub repo时,会发生这种情况,它已向它发出请求
以“refs/pull
”开头的ref是由GitHub创建的合成只读ref,您不能更新(因此也不能“清理”)它们,因为它们反映的分支可能实际上来自其他存储库,也就是向您提交pull请求的存储库
因此,虽然您推送了所有真实的引用,但拉取请求不会得到更新
你需要这样做
只需使用两个更具体的规范替换上面的“全部捕捉”参照规范,以仅包含所有头部和标记,而不包括拉动,并且所有远程拉动参照将不再包含在裸镜中:
而不是
git克隆--mirror
使用
git克隆--bare
(我希望这是一个评论,但声誉不够)
根据@VonC的回答,这似乎不是问题
因此,虽然您推送了所有真实的引用,但拉取请求不会得到更新
我看到了两种您希望复制存储库的场景
在这两种情况下,
git clone--mirror
似乎是您最安全的选择,因为即使您在push
中看到错误,所有与请求无关的内容都被成功推送,这就解决了场景1。对于场景2,您希望这些请求引用作为备份的一部分 在那里找到了有效且简单的解决方案
或
谢谢,我已经完成了这个过程,但是由于某些原因,我仍然会遇到同样的错误。我用镜像复制了回购协议,我用
git config-e
编辑git配置,然后运行-git remote update
和git push mirror
,仍然得到相同的错误。@deezx返回什么git配置--get regex remote.origin.fetch
?这是输出-$git配置--get regex remote.origin.fetch remote.origin.fetch+refs/heads/*:refs/heads/*remote.origin.fetch+refs/tags/*:refs/tags/*实际上,当我在没有--mirror的情况下克隆存储库时,正如您编写的那样编辑git配置,它工作了。它只获取分支和标签,所以它工作了!我现在唯一的问题是,我看到它没有反映refs/changes
。有没有办法告诉git获取除pull请求以外的所有请求(refs/pull
)?@deezx没有,您需要添加+refs/changes/*:refs/changes/*
,它才能获取头,标签和更改,但不能pull
。在那之后,git-push--mirror
还能工作吗?确保在一个新的本地克隆中重试(不是clone--mirror
,只是简单的克隆,在其中添加fetch refspec,执行git fetch
,然后push--mirror
到另一个repo)我更喜欢senario 2,在这里我想完全迁移我的存储库(并且非常有兴趣保留任何pull请求的历史记录). 我该如何找到一个使它们保持完整的解决方案(即github repo-->镜像克隆-->gitlab(或其他vcs))
! [remote rejected] refs/pull/1/head -> refs/pull/1/head (deny updating a hidden ref)
! [remote rejected] refs/pull/1/merge -> refs/pull/1/merge (deny updating a hidden ref)
fetch = +refs/heads/*:refs/heads/*
fetch = +refs/tags/*:refs/tags/*
fetch = +refs/change/*:refs/change/*
git push newremote refs/remotes/oldremote/*:refs/heads/*
git push newremote refs/remotes/oldremote/features/*:refs/heads/features/*