Git push 在 git-receive-pack 处卡住了

3

我正在尝试在一个相当大的仓库上使用git push,但它总是在最后一步 POST git-receive-pack (71245363 bytes) 处卡住。我已经尝试了这个解决方案,但似乎没有任何效果。谢谢提前...

$ git push origin master --verbose
Pushing to https://github.com/obiwac/AQUA-2.X-x86
Username for 'https://github.com': Obiwac
Password for 'https://Obiwac@github.com': 
Counting objects: 28, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (23/23), done.
Writing objects: 100% (28/28), 67.94 MiB | 7.77 MiB/s, done.
Total 28 (delta 6), reused 1 (delta 0)
POST git-receive-pack (71245363 bytes)

你的上传速度是多少?以3 Mbit/sec(约为0.375 MB/sec)的速度发送大约71兆字节将需要大约189秒,或略超过3分钟。 - torek
大约100kb/s,但我让它运行了相当长的时间(2小时)。 - Inobulles
哦,如果每秒是 100KB(千字节),直接除法得到约 12 分钟(约 712.5 秒); 如果是比特位,则跳到 5700 秒或约 1.6 小时。两个小时应该足够了。请注意,Github 本身对存储库大小(软限制)和对象大小(硬限制)都有限制,这似乎很可能在某些时候会达到极限(https://help.github.com/articles/what-is-my-disk-quota/)。 - torek
我代码库里没有那么多内容,只有不到1MB。是的,那是以千比特每秒计算的。 - Inobulles
输出 (POST ... 71245363 字节) 告诉您它正在发送多少数据。如果您的存储库很小,那么下一个问题可能是:为什么这个 POST 如此庞大? - torek
2个回答

2

这是一个比较老的问题,但我想给出解决方案,因为我已经很久以前解决了这个问题。

在我尝试推送我的 repo 之前,我不小心提交了一个非常大的文件,并试图解决这个问题,然后删除它并创建另一个提交。

我不知道的是,即使你之后删除了它,git 仍然会保留该文件和该提交的记录,并且仍然需要推送它。

因此,解决方案是“撤消”最后一次提交,通过运行类似于以下内容的命令:

$ git reset --hard HEAD~1

这将使我们的头回到上一个提交。 --hard 参数意味着我们想要放弃所有引入的更改,而不是保留它们。

希望这能帮助到某个地方的某个人,并祝你晚上愉快!


1
在执行@Inobulles的回答之前,先检查文件夹/目录非常重要。如果你只是使用“git reset --hard HEAD~1”,可能会损坏你的存储库。主要问题在于你的目录很大,上传速度可能很慢。只需切换到更快的互联网或等待即可。
否则,请检查你的目录并使用“git status”确保你没有上传一个巨大的文件夹到你的磁盘中。你可以再次在该目录中使用“git init”以确保。

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