推送时出现Git错误(远程无法报告状态)

时间:2019-02-22 13:35:24

标签: git github

我使用选项“ --mirror”从github企业远程服务器克隆了一个存储库。

我想将该存储库推送到另一个远程存储库中,但是出现以下错误:

>     ! [remote failure]        XXXX-7342f50b84fbfff3a2bbdcf81481dbcb2d88e5cd -> XXXX-7342f50b84fbfff3a2bbdcf81481dbcb2d88e5cd (remote failed to report status)
>     error: failed to push some refs to 'git@github.ZZZZ.com:XXXX/YYYY.git'
>     Branch master set up to track remote branch master from origin.

6 个答案:

答案 0 :(得分:39)

运行git gc为我解决了此问题。这将执行一些可能导致此问题的垃圾收集内务处理tasks

答案 1 :(得分:1)

我先做过git pull --rebase branchname,然后做过git push origin branchname

答案 2 :(得分:1)

当Github关闭(您可以check Github's status here)时,似乎也将发生此错误,因为目前是在撰写本文时。我遇到类似的错误,前面是Internal Server Error

davidcalhoun@Davids-MacBook-Pro hugo % git push
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 16 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 485 bytes | 485.00 KiB/s, done.
Total 6 (delta 4), reused 2 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
remote: Internal Server Error
To github.com:davidcalhoun/davidbcalhoun.com.git
 ! [remote failure]    master -> master (remote failed to report status)
error: failed to push some refs to 'git@github.com:davidcalhoun/davidbcalhoun.com.git'

答案 3 :(得分:0)

看来我有很多参考文献(〜9000)。 删除其中大多数即可解决问题

答案 4 :(得分:0)

我被一个非常大的(22Gb)镜像克隆存储库错误地导入到我的GitHub企业服务器中。

git gc有所帮助,因为它将存储库的大小减小到仅7Gb,但我仍然无法推送它,因为有〜13k个标签(显然每个标签都是至关重要的!),它们被列为错误。与OP报告相同。

解决方案是将标签放入较小的块中,例如

git push refs/tags/tag-2015* git@my_server:my_org/my_repo

您可以将其放入循环并将所有标签推送到块中,例如

for n in {15..20}; do git push refs/tags/tag-20${n}* git@my_server:my_org/my_repo; done

现在,当您执行原始的push --mirror时,这些标签将已经出现在遥控器上,并且您不会收到错误消息。

在此之前,我还以类似的方式推动了分支机构,但是由于那不能解决问题,我认为这并不重要。无论如何,只要you switch to each branch in a bare repo并将其推送就可以了。

git branch -a --format "%(refname)" | xargs -i bash -c "git symbolic-ref HEAD {} && git push git@my_server:my_org/my_repo"

这可能是一个神话,但是给我这个错误的原因是git里面有一些隐藏的限制。在这种情况下,推送标签受到限制,整个操作必须在5分钟内完成。因此,分解该过程是可行的。

答案 5 :(得分:0)

我在推送使用 svn2git 生成的存储库时遇到了这个问题。显然没有开放的 PR(全新的空上游存储库),repackgc 没有帮助。回购的大小似乎不是一个因素。以下是一些观察结果:

  1. 推送到 Github Enterprise(自托管)时:push --mirror 工作正常。
  2. 推送到 github.com 时,我遇到了这个问题。但是:
  • git push --tagsgit push --all 工作正常。
  • git push --mirrorrefs/backups/*refs/replace/* 上失败

我的结论是,对于 github.com 不喜欢的某些引用,可能会出现此问题,但 --all --tags 足以满足我的需要。