我正在尝试创建一个脚本,它可以将我的git存储库镜像到另一个存储库。一切都很好,但它一直在说
[remote rejected] refs/pull/xx/head -> refs/pull/xx/head (The current action can only be performed by the system.)存储库被克隆到我计算机上的一个文件夹中,然后推送到另一个git。所有的文件和历史都是按其应有的方式复制和推送的,但是这个“错误”不断出现。我能做什么?

这是我的剧本
git clone --mirror https://path1.com/_git/fredagsproject1
cd fredagsproject1.git
git remote set-url --push origin https://path2.com/_git/fredagsproject2
git push --mirror发布于 2017-10-06 15:10:12
当你运行git push时,你会让你的Git通过网络电话给另一个Git打电话。您的Git将Git一些对象(提交等)交给Git,然后向Git发送一堆请求:
refs/heads/branch设置为指向提交1234567...refs/tags/v1.2设置为指向带注释的标记对象fedcba9...还有类似的事。
使用git push --mirror告诉Git请求Git设置您拥有的每个名称,在请求中使用完全相同的名称。如图像所示(您已经复制到文本行中),这些名称中有许多具有以下形式:
refs/pull/xx/head一些两位数的xx序列。
他们的Git只是简单地说不:我拒绝设置这个名字。
您可以尝试添加--force,它告诉您的Git发送命令-设置这些名称!-instead的礼貌请求,请设置这些名称,但看看他们的Git返回的原因,同时拒绝:
当前操作只能由系统执行。
那似乎是在说:手拿开这个名字!我把它保留给我的使用,你怎么敢让我改变的 refs/pull/73/head__!在这种情况下,命令形式(相对于礼貌的请求形式)也可能被拒绝。
请注意,表单refs/pull/number/head和refs/pull/number/merge的ref名称在内部被GitHub等用于管理拉请求。很可能您甚至不应该尝试设置这些名称--所以如果您的尝试失败了,这可能是一件好事。
发布于 2018-10-06 06:32:14
这是@torek回答的后续。若要避免远程拒绝的错误,请尝试以下命令而不是git push --mirror。
git push --all
git push --tags--all选项将所有参考文献推送到/refs/heads/下,而--tags选项将所有参考文献推送到/refs/tags下。
大多数遥控器会很高兴地接受这些裁判。虽然可以在上面的命令中使用--force选项,但这是一种破坏性操作。在行使这个选项时要非常小心。
https://stackoverflow.com/questions/46603239
复制相似问题