git push在Total行后挂起


76

我的git推送在似乎完成推送后挂起。我要进行git push

Counting objects: 51, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (47/47), done.
Writing objects: 100% (47/47), 27.64 MiB | 6.47 MiB/s, done.
Total 47 (delta 4), reused 0 (delta 0)

它挂在这里,我必须按Control-C返回命令行。在过去的这个项目中,我过去做出过几次承诺。我在机器上尝试了其他存储库,它们工作正常。这里发生了什么?


5
诸如“ strace -efile -f git push”之类的内容可能会揭示有关挂断位置的更多信息。
埃里克·约翰逊

远程仓库上有什么变化吗?如安装了长期运行的接收后挂钩?
加文2013年

否。我正在使用bitbucket,因此无法访问所有内容。我开始认为这只是一个很大的转移,需要很长时间。推送时是否有进度指示器?
Patrick

您要推送到的存储库上的权限有问题,或者该位置磁盘空间不足。我看过两个问题。git gc也可能有帮助。
qwerty9967

2
发生了完全相同的问题:在我的情况下,服务器上的git用户不拥有裸仓库-root拥有它(已在chown中忘了-R)
Fabio

Answers:


107

事实证明这根本没有问题。我只需要等到上传完成即可。我添加了几个大文件,但是没有进度指示器。也许其他人会发现这很有帮助。


11
好在我的情况下2kb的文件不是很大..互联网连接仍然很棒,仍然挂起了
Rami Dabain 2013年

2
这很有帮助。好东西,我没打扰它:P
Glogo

1
我遇到了类似的问题,但是Windows 8的任务管理器中的“网络”指示器显示活动为0%...
Pieter 2014年

1
@Pieter-我完全一样-没有明显的网络活动(即使这是一个很大的推动),但随后一切顺利
Andy

在“完成”之后,在没有用户反馈的情况下继续做事,这是一个非常糟糕的设计界面。
埃尔南Eche

11

可能只是片刻(如已接受的答案所建议),但是在大多数情况下,它与远程计算机上的权限相关联。自托管的remote大部分不是公共git服务(例如GitHub,Gitlab或Bitbucket)上的问题,但自托管的remote可能具有特殊的用户或一组访问权限。

并且在新的裸存储库上,不足以更改文件夹,但是由于其中包含.git-Folder ,因此需要递归。


就我而言,这是真的。检查权限解决了该问题。
averysphere '18年

是的,这完全是我们本地组共享的git repo的问题。奇怪git没有给出任何错误或警告。
食人魔赞美诗

...在此之前做了1000次...仍然需要阅读您的答案以仔细检查目录中的权限,谢谢!
moritz '19

3

在远程计算机上只有裸仓库的情况下,权限也可能是导致这种情况的原因。


2

它仅在我这样做的情况下对我 git push -u origin master有用,当我仅用于git push位桶时,它并没有通过。


1

等到上传完成对我不起作用。我推的文件不是很大,但等待了足够长的时间,仍然被绞死。

对我有帮助的是从升级msysgit 1.9.5git-for-windows 2.6.2


1

只是想添加此内容,以防对任何人有帮助。我有同样的问题,问题是git用户没有写文件权限,只能从文件中读取。


1

问题是上传文件很大。

您可以等待它,或者转到项目文件夹,然后删除所有使用maven在目标文件夹中可以找到的库。然后进行推送,它将很快发生。

无论如何,库文件夹不需要存储在git中,这只是浪费git空间,除非并且直到它们在maven存储库中不可用并且您确实需要存储它们为止


0

查看您是否已上演但尚未提交更改。(git status

如果是这样,请提交(或取消登台)这些文件,然后尝试进行推送。为我工作。


0

就我而言,这是由的问题引起的msysgit 1.9.5。降级可以msysgit 1.9.4解决问题。



0

签出git正在使用的用户权限

就我而言,我尝试了ssh,使用的系统用户无法写入git裸存储库...

是调试ssh连接的方法


0

此问题可能是由SSH代理问题引起的。

我最近遇到了这个问题,因为我将默认shell从更改zshbash。我本来订了我的SSH密钥使用zsh,所以他们无法在默认情况下bash,使用chsh -s /bin/bash

要修复,则需要使用相同的shell脚本(您的SSH密钥(S)添加到SSH认证代理bashshzsh等),您使用的是执行您的Git命令:

eval `ssh-agent`
ssh-add ~/.ssh/some_key_rsa

您需要输入密钥的密码短语才能添加它。要将密码短语存储到用户钥匙串中,这样您就不必每次使用密钥时都输入密码,请将带有-K选项的密钥添加到ssh-add命令中。

ssh-add -K ~/.ssh/some_key_rsa

请注意,大写字母K是使用小写字母的命令选项。


0

在推送到GitHub时遇到了同样的问题。我发现被推送的文件的子集未被接受。

通过将大型提交分解为较小的提交(如此SO问题中所述:将先前的提交分解为多个提交),然后在大多数较小的碎片中找到成功,我发现了这一点。

问题片包含图像文件,我仍在整理哪个特定文件(多个文件)触发了问题。


0

我想将@Fabio的评论附加到原始帖子上-为我解决了。

我在Raspberry Pi上运行自己的临时本地git服务器。我忘记chown了新的裸仓库,而从远程PC推送第一次提交将无限期地挂起。

修复了该问题(chown以root身份运行或使用sudo):

cd /srv/git
chown git:git -R <repo_name>.git

替换<repo_name>为您的仓库名称。



0

我遇到了同样的问题,结果发现我有一个连接到Heroku的回购协议的旧版本(已删除但名称相同)。当我断开连接时,它完成了推送。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.