108

我的 git push 在完成推送后挂起。我要去 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)

它挂在这里,我必须控制-c 才能返回命令行。过去我已经对这个项目进行了几次提交,没有任何问题。我在我的机器上尝试了其他存储库,它们工作正常。这里发生了什么?

4

21 回答 21

147

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

于 2013-04-18T13:32:09.200 回答
48

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

http.postBuffer

将数据发送到远程系统时,智能 HTTP 传输使用的缓冲区的最大大小(以字节为单位)。对于大于这个缓冲区大小的请求,使用 HTTP/1.1 和 Transfer-Encoding: chunked 来避免在本地创建海量的包文件。默认为 1 MiB,这对于大多数请求来说已经足够了。

请注意,提高此限制仅对禁用分块传输编码有效,因此仅应在远程服务器或代理仅支持 HTTP/1.0 或不符合 HTTP 标准的情况下使用。一般来说,提高这个值并不是解决大多数推送问题的有效解决方案,但会显着增加内存消耗,因为即使是小推送也会分配整个缓冲区。

解析度

  1. 将 Git 缓冲区大小增加到存储库的最大单个文件大小

  2. git config --global http.postBuffer 157286400

  3. 参考Git push failed的解决方法——客户端打算为ngnix反向代理配置发送太大的chunked body。将此参数增加到您的存储库的最大单个文件大小。

  4. 绕过出站代理,如由于 git 出站代理而无法克隆或拉取中所述

于 2021-08-09T11:30:06.817 回答
13

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

在新的裸存储库上,更改文件夹是不够的,而是需要递归,因为.git-Folder 在里面。

于 2018-03-21T16:04:05.423 回答
9

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

于 2014-06-24T06:27:12.807 回答
2

等到上传完成对我不起作用。我推了不是很大的文件,但等了足够长的时间,还是挂了。

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

于 2015-11-05T10:45:27.823 回答
2

在远程机器上的裸仓库的情况下,权限也可能是导致此问题的原因。

于 2018-08-24T15:10:16.287 回答
1

只是想添加这个以防它对任何人有帮助。我有同样的问题,问题是 git 用户没有写入文件的权限,只能读取它们。

于 2018-08-08T02:38:40.943 回答
1

问题是上传文件很大。

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

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

于 2018-10-26T05:30:33.783 回答
1

添加另一个本地提交并重试推送对我有用。

于 2020-03-06T17:25:08.500 回答
1

使用这个命令:

git remote add origin <url>
git push -f origin master
于 2020-04-25T07:25:26.130 回答
0

查看您是否已暂存但未提交更改。( git status)

如果是这样,请提交(或取消暂存)这些内容,然后尝试推送。为我工作。

于 2015-06-26T17:39:33.220 回答
0

就我而言,这是由msysgit 1.9.5. 降级msysgit 1.9.4解决问题。

于 2015-08-03T11:59:15.237 回答
0

就我而言,遥控器有一个完整的磁盘。删除遥控器上的一些文件立即解决了这个问题。

于 2018-05-20T11:50:31.643 回答
0

检查git 正在使用的用户权限!

在我的情况下,我尝试通过 ssh 并且使用的系统用户无法写入 git 裸存储库......

是调试 ssh 连接的方法

于 2018-07-23T15:46:42.030 回答
0

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

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

要解决此问题,您需要使用与执行 git 命令相同的 shell 脚本(bashshzsh等)将 ssh 密钥添加到 SSH 身份验证代理:

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

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

ssh-add -K ~/.ssh/some_key_rsa

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

于 2019-11-19T16:37:18.340 回答
0

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

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

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

于 2019-12-05T02:00:25.713 回答
0

我想将@Fabio 对原始帖子的评论放在第二位——这为我解决了这个问题。

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

这修复了它(chown以 root 身份运行或使用sudo):

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

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

于 2020-02-05T07:18:38.133 回答
0

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

于 2020-04-10T06:43:51.490 回答
-1

我最近在尝试将大约 40 个文件总共推送大约 2MB 时得到了这个。git push --verbose没有显示任何错误,但在Total <...>写入终端后会挂起。

我通过 GitHub 重新发布了一个新的 PAT,并且推送按预期进行。

于 2021-11-03T23:43:16.373 回答
-1

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

我找到了一个更友好的解决方案,上面分享的@arothgit config --global http.postBuffer 157286400就是答案。

我刚刚打开了一个新的 iTerm 窗口,运行了上面的命令,然后git push在 VSCode 中的终端仍然挂起时运行。然后我ctrl c关闭了 VSCode 中的终端会话,我又重新开始工作了。

谢谢@aroth!

于 2021-12-30T13:31:53.673 回答
-2

如果您等待的时间足够长但问题仍然存在,请尝试以下操作:

1 - 使用 CTRL+C(命令 +C)停止进程。

2-对任何文件进行非常小且无效的更改。(供 git 系统检测新文件是否已修改)。

3-按照 git add 和 git commit 步骤并推送您的更改。

git add modified_file
git commit -m "new commit message"

4-运行 git push 命令,你会看到它没有任何问题

git push
于 2022-03-02T13:40:48.793 回答