代理后面的git push remote问题

时间:2011-02-08 21:19:38

标签: ruby-on-rails git proxy github

要设置上下文,我尝试使用toto设置我的博客 我做了

$ sudo gem install toto

并正确安装了宝石。

Successfully installed rdiscount-1.6.8
Successfully installed toto-0.4.9
2 gems installed

之后,我尝试了

$ git clone git://github.com/cloudhead/dorothy.git myblog

但是我收到以下错误

Cloning into myblog...
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)

我的git http代理设置正确

jatin@jatin-ubuntu:~/myblog$ git config --global http.proxy
http://proxy:port

我的http_proxy设置也正确

jatin@jatin-ubuntu:~$ echo $http_proxy
http://proxy:port/

所以,我用http替换了git,如

$ git clone http://github.com/cloudhead/dorothy.git myblog

它有效。

现在,当我执行以下操作时

$ cd myblog
$ heroku create myblog

直到这里才有效,我得到

Creating myblog...... done
Created http://myblog.heroku.com/ | git@heroku.com:myblog.git
Git remote heroku added

但它失败了:

$ git push heroku master

并出现以下错误

ssh: connect to host heroku.com port 22: Connection timed out
fatal: The remote end hung up unexpectedly

我不知道该怎么办,所以在谷歌搜索后我发现你无法使用http将更改推送到github。
在进一步挖掘时,我发现了这个链接

how-to-use-the-git-protocol-through-a-http-connect-proxy

表示您可以让防火墙管理员配置代理以允许CONNECT for端口9418,这是git使用的端口。

一旦他们适当地配置了代理,您就应该能够使用netcat-openbsd或socat之类的工具来连接。

我的问题是我是学生而且我无法解决这个问题,因为我无法联系管理员。我不知道该怎么做,因为我仍然在寻找答案。

3 个答案:

答案 0 :(得分:6)

您使用此网址heroku添加了git@heroku.com:myblog.git远程。这可能是由heroku create命令配置的。

当你推到这个遥控器时,它是通过SSH完成的。这正是错误消息所指示的:你(或git)试图ssh到heroku.com,但由于你的防火墙(可能)拒绝了,所以不能。使用git push heroku master命令,您推送到Github,而是推送到Heroku的git存储库。要将你的东西推送到Github,你需要git push origin master并使用ssh或http进行传输。 git://协议本身不支持推送变更集,但是是一种未经身份验证的重新协议。

目前,Heroku似乎只允许其git repos的SSH传输,并且Github上似乎没有任何直接挂钩(参见Push from github to heroku without downloading repo)。这意味着在Heroku上发布您的应用程序,您需要能够通过SSH从本地主机推送到heroku.com。

答案 1 :(得分:2)

您也可以按https://cloudhead@github.com/cloudhead/dorothy.git(注意网址中的用户名)。

答案 2 :(得分:1)

当你推到这个遥控器时,它是通过SSH完成的。您得到的错误是因为客户端无法通过SSH连接,很可能是因为您在防止连接的某种类型的防火墙后面。在尝试从工作中推送到Heroku时,我曾遇到同样的问题。

我建议您在本地开发,然后去一些公共热点将更改推送到Heroku(如星巴克)。