git push时出现"The remote end hung up unexpectedly"错误

4
我在本地仓库创建了一个新的分支,并进行了一些提交后,想要将其推送到远程仓库。
命令为:git push origin new_branch
但是出现了以下错误: $ git push origin new_branch
计算对象数: 32, 完成.
压缩对象中: 100% (18/18), 完成.
写入对象中: 100% (18/18), 5.29 KiB, 完成.
总共 18 (差异 13),复用 0 (差异 0)
写失败: Broken pipe fatal: 远程端意外挂断
fatal: 远程端意外挂断
当我使用 $ git remote -v 命令时:
origin git@106.187.99.99:XXX.git (fetch)
origin git@106.187.99.99:XXX.git (push)
还有 git 分支。
fiberead_com$ git branch -a
* new_branch
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master
  remotes/origin/online

nginx.conf

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
#    keepalive_timeout  65;
client_header_timeout 3m;
client_body_timeout 3m;
keepalive_timeout 175 120;
client_max_body_size 35m;

    tcp_nodelay        on;


    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

请问有人可以帮助我吗?

我的git服务器在Linode上。我使用GITLAB,其他项目没有这个问题。只有一个新项目,我使用'git clone'将其拉到我的电脑上。但是当我推送代码时,出现了一些错误。

我使用的是Nginx。

我使用'$ git push origin master',也遇到了同样的问题。


你的远程设置如何?请展示 git remote -v 的输出。 - davids
抱歉 @VonC,我不知道如何查找服务器日志。 - JeskTop
@JeskTop 当然,那就检查一下nginx的日志。 - VonC
优秀:在进行git push之后,您是否在/var/log/nginx/error.log中看到任何可疑的内容? - VonC
@VonC 不是的。error.log文件是空的。 - JeskTop
显示剩余15条评论
3个回答

5
那意味着负责监听请求的http服务器(这里是git push over http)未能完成任务。
可能是因为服务器出现问题,仅包含http服务器日志才能找到根本原因(例如消息过大无法处理、权限问题等)。这些日志可以在etc/httpd/httpd.conf(Apache)、/var/log/nginx/error.logNGiNX)甚至GitLab本身中找到。
或者是因为它从未收到请求,OP jesktop确认这种情况在这里发生了:

我找到了所有日志,但错误日志为空。
问题出在网络上。因为我在中国,这里有一个特殊的网络。
所以VPN可以解决这个问题。


0

试试这个:

git push origin feature/new_branch

并检查连接是否正常。


$ git push origin origin/new_branch 错误:src refspec origin/frayay 与任何内容都不匹配。 错误:无法将某些引用推送到 'git@106.187.99.99:XX.git'。 - JeskTop
$ git push origin origin/dev 总共 0 个(增量 0),重用 0 个(增量 0) 推送至 git@106.187.99.99:XX.git
  • [新分支] origin/dev -> origin/dev
- JeskTop

0
对于从谷歌搜索而来的人:六年过去了,这种情况仍然会定期发生。我曾经在不经意间提交了一个非常大的二进制文件(等等),导致出现了这个问题。仅仅删除二进制文件并重新提交是不够的,因为 Git 的工作方式使得最初包含它的提交仍然存在,所以大小也没有改变。解决方案是完全删除有问题的提交。
一旦我确定了坏提交是原因,每次出现这种情况的解决方案就变得清晰明了:git bisect。这种情况对我来说可能每年发生一两次,而且并不总是因为一个大文件。一旦你排除了网络问题,正如其他答案所指出的那样,对我来说解决方案总是相同的——二分查找,删除有问题的提交,然后你就能够推送了。

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