如果出现无法推送代码到Github的情况,首先需要检查下面的问题。
- 你是否完整的配置了系统代理,打不开网页首先要肯定不是你电脑的问题,是wall的问题。
- 你是否配置了git代理,如果没有配置的话需要完整配置。
- 你是否启用了git代理,如果配置git代理没有启用,那么效果等同于没有配置。
- 推送本地部署仓库的时候,是否关闭了git代理和本地代理,如果发现502网关错误或者是无法推送的情况要首先检查这里。
查看代理
git config --global --get http.proxy
git config --global --get https.proxy
取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
如果你电脑上的git能在大部分地方进行同步,但是在某处地方的网络下无法同步,并且运行git pull或git push长久没有反映,最后出现ssh: connect to host github.com port 22: Connection timed out,很可能是你的网络供应商(比如广电网)在出口防火墙上屏蔽了22端口,这意味着你将无法访问其他主机的22端口。
对此,github提供了一种解决方案,允许你使用443端口进行ssh连接,因为443端口是访问https网站所必须的,大部分防火墙都会允许通过。
运行这段命令,看看是否有成功提示,如果成功,则可以使用这个解决方案。
ssh -T -p 443 git@ssh.github.com
简单地配置一下,让你每次ssh连接github都通过443端口。如果你使用Linux,在~/.ssh/config内,添加这些内容,指明ssh连接git@github.com或git@ssh.github.com走443端口。
Host github.com
Hostname ssh.github.com
Port 443
User git
需要注意的是,假如你的电脑上拥有多个github账户,你可能事先修改过ssh的配置文件,你可能会将配置文件修改成这样子。
# For the account1
Host github_account1
HostName ssh.github.com
PreferredAuthentications publickey
Port 443
User git
IdentityFile ~/.ssh/id_rsa_account1
# For the account2
Host github_account2
HostName ssh.github.com
PreferredAuthentications publickey
Port 443
User git
IdentityFile ~/.ssh/id_rsa_account2
url = git@github_account1:account1/my_repo.git
你将通过配置文件中设置的Host别名github_account1代替github.com访问github,这意味着,如果你想要进行进行git clone操作,也应该通过别名访问,否则无法走443端口。假如你想clone git@github.com:torvalds/linux.git,你应该将链接修改为git@你设置的别名:torvalds/linux.git。或者是,额外在配置文件里加上。这样就能直接git clone git@github.com:torvalds/linux.git了。
# Just for clone
Host github.com
HostName ssh.github.com
Port 443
User git
这个方案有效的前提是:执行命令ssh -T -p 443 git@ssh.github.com后不再提示connection refused,所以要尝试这个方案的小伙伴先执行这条命令测试下。
一般情况下,如果无法推送的远程仓库,但是你的其他项目是可以推送的话,将你的项目使用https协议,不要使用ssh协议
然后把里面的url配置项从git格式
url = git@github.com:username/repo.git
修改为https格式
url = https://github.com/username/repo.git
这个其实修改的是repo根目录下的./git/config文件。说直白点,就是你项目目录下面的.git文件
