我的git推送在完成推送后被挂起。我要去 git推

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才能回到命令行。我已经在过去与这个项目没有问题的几次提交。我在我的机器上尝试过其他的回购,它们工作得很好。这是怎么回事?


这一点问题都没有。我只需要等到上传完成。我已经添加了几个大文件,没有进度指示器。也许其他人会觉得这很有用。


只有当我这么做的时候才对我起作用 git push -u origin main,当我只是简单地使用git push作为位桶时,它没有推送通过。


查看是否已经进行了阶段性但未提交的更改。(git状态)

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


在我的情况下,这是由msysgit 1.9.5的问题引起的。降级到msysgit 1.9.4解决了这个问题。


等待上传完成对我来说是行不通的。 我推了一把不大的锉刀,但等得够久了,还是挂了。

对我有帮助的是从msysgit 1.9.5更新到git-for-windows 2.6.2。


它可以(正如公认的答案所暗示的那样)等待片刻,但在大多数情况下,它与远程上的权限相关联。 虽然在GitHub、Gitlab或Bitbucket等公共git服务上大多数情况下都不是问题,但自托管远程服务器可能有一个特殊的用户或组来访问。

在新的裸存储库中,改变文件夹是不够的, 但需要递归,因为里面有。git- folder。


在我的例子中,遥控器的磁盘已经满了。删除远程上的一些文件立即解决了这个问题。


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

在我的情况下,我尝试通过ssh和使用的系统用户无法写入到git裸库…

下面是调试ssh连接的方法


只是想加上这个,也许能帮到谁。 我遇到了同样的问题,问题是git用户没有写入文件的权限,只能从文件中读取。


在远程机器上裸回购的情况下,权限也可能是造成这种情况的原因。


问题是上传文件太大了。

要么等待,要么转到项目文件夹,删除在使用maven时可以在目标文件夹中找到的所有库。那就推一下,很快就会发生的。

无论如何,库文件夹不需要存储在git中,这只是浪费git空间,除非它们在maven存储库中不可用,而你真的需要存储它们


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

我最近遇到了这个问题,因为我将默认shell从zsh更改为bash。我最初使用zsh设置我的ssh密钥,所以它们在默认情况下对bash不可用,使用chsh -s /bin/bash

为了解决这个问题,你需要使用相同的shell脚本(bash, sh, zsh等)将你的ssh密钥添加到ssh身份验证代理,你正在使用它来执行git命令:

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

为了添加密钥,您需要输入密钥的口令。要将密码短语存储到用户密钥链中,这样就不需要在每次使用密钥时都输入它,可以将带有-K选项的密钥添加到ssh-add命令中。

ssh-add -K ~/.ssh/some_key_rsa

注意,使用大写K时使用小写K是不同的命令选项。


我在推送到GitHub时也遇到了同样的问题。我发现有一部分被推送的文件没有被接受。

我发现这是通过把我的大提交分解成小的提交(正如这个SO问题所描述的:把以前的提交分解成多个提交),然后在大多数小的部分中找到成功。

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


我想把@法比奥的评论附加到最初的帖子上——它帮我解决了这个问题。

我在树莓派上运行自己的临时本地git服务器。我忘记删除新的裸回购,从远程PC上执行第一次提交将无限期地挂起。

这修复了它(运行chown作为根或sudo):

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

将<repo_name>替换为repo的名称。


添加另一个本地提交并重新尝试推送对我来说是有效的。


我有同样的问题,原来我有一个旧版本(我删除了,但有相同的名称)的回购连接到Heroku。当我断开它时,它完成了推送。


使用该命令:

git remote add origin <url>
git push -f origin main

https://git-scm.com/docs/git-config#Documentation/git-config.txt-httppostBuffer

http.postBuffer Maximum size in bytes of the buffer used by smart HTTP transports when POSTing data to the remote system. For requests larger than this buffer size, HTTP/1.1 and Transfer-Encoding: chunked is used to avoid creating a massive pack file locally. Default is 1 MiB, which is sufficient for most requests. Note that raising this limit is only effective for disabling chunked transfer encoding and therefore should be used only where the remote server or a proxy only supports HTTP/1.0 or is noncompliant with the HTTP standard. Raising this is not, in general, an effective solution for most push problems, but can increase memory consumption significantly since the entire buffer is allocated even for small pushes.

决议

将Git缓冲区大小增加到回购中最大的单个文件大小 Git配置——global http。postBuffer 157286400 参考Git推送失败的解决方案-客户端打算为ngnix反向代理配置发送太大的块体。将此参数增加到回购中最大的单个文件大小。 绕过出站代理,因为git出站代理而无法克隆或拉取


我最近在尝试总共推送大约2MB的40个文件时得到了这个。git push——verbose没有显示错误,但是在Total <…日志含义>写入终端。

我通过GitHub重新发布了一个新的PAT,推送如预期的那样进行了。


在等了两个多小时后,我的git推送仍然卡住了。所以,我不得不在提交之前重置,我不小心上传了一张3.1mb的照片(我猜这是冻结的罪魁祸首)。

我发现了一个更友好的解决方案,@aroth在git配置上分享——global http。postBuffer 157286400是答案。

我只是打开一个新的iTerm窗口,运行上面的命令,然后运行git push,而VSCode中的终端仍然挂起。然后我按ctrl c关闭终端会话在VSCode和我回到业务。

谢谢@aroth!


在我的例子中,Git托管平台GitHub的服务器有问题,所以也要检查你的提供商状态。


对我来说,我安装了Bitdefender,这就是导致问题的原因。卸载后一切正常


对我来说,当我切换到bash而不是zsh终端时,它就工作了。


我尝试了上面提出的所有答案,但没有一个对我有效。出于某种原因,这种情况只在我试图推到“master”时发生。当我创建并推到“主”分支时,它工作得很好。


Try:

git gc

我把它挂在同一个地方,但文件非常小,所以等待不是答案。解决方案是git gc(垃圾收集)来重新计算repo中的增量。


我也有同样的问题。运行此命令可以修复此问题。

git config --global sendpack.sideband false

我也有同样的问题,推动提交到GitHub。在我的案例中,问题出在一个分支。我尝试用一个相对大的提交来推送本地分支,而没有一个远程分支git推送——set-upstream origin <你的分支名称>。我已经设法通过在GitHub上创建一个分支,然后推动提交来解决这个问题。