背景

在阳光明媚的一个上午,我点击了 git pull ,发生了报错...

报错语句:unable to access 'http://gitlab.../xxx.git/': The requested URL returned error: 502

之前也发生过一次这种情况,可能是网络不稳定导致请求超时的问题,尝试了去掉代理下载代码 unset http_proxy、unset https_proxy 和 git bash 里面执行 for((i=10;i<=200;i=i+10));do git fetch --depth=$i;done 都没有生效(也可能是我执行的姿势不对,感兴趣的小伙伴可以尝试一下),于是改变 clone 代码的方式

我原本是使用 clone with http,怀疑因为这个方式才跟网络有关。

 本篇的解决办法是改变 clone 代码的方式,如果使用 TortoiseGit 发生报错:No supported authentication methods available (server sent: publickey) 也使用下面的方法解决。

clone with ssh 和 clone with http 的区别

HTTP:不管是谁,拿到 url 就可以随便 clone,但是在 push 的时候需要验证用户名和密码;

SSH:clone 的项目你必须是拥有者或者管理员,而且 clone 之前需要添加 SSH key。

生成 SSH key

1、打开 PuTTYgen

打开开始菜单,点击 TortoiseGit 下面的 PuTTYgen 。

 2、点击 Generate,生成钥匙

 3、保存公钥和私钥到本地

点击 Save public key 保存公钥,

点击 Save private key 保存私钥。

注:Key passphrase 是设置密码,Confirm passphrase 是确认密码。

保存的格式,位置可以自选。

4、将公钥放到 gitLab 账号上

路径:点击头像,选择 Edit profile,选择左侧的SSH keys,将生成的公钥复制进去,点击 Add key 即可。

如果是 git ,路径:点击头像,选择 Settings,点击左侧列表的 SSH and GPG keys,点击 New SSH key,然后将公钥复制进去,保存即可。

 5、设置本地 TortoiseGit 私钥

6、修改 clone 方式

在项目的 .git 文件夹中,打开 config 文件。

将 url 由 http://gitlab.../xxx.git  改为 ssh://git@gitlab.../xxx.git 即可。

完成以后设置,就可以随意 git pull 了!

总结

仍然怀疑使用之前报错的原因是网络问题,因为之前都是好用的,可能最近公司的网络不太稳定。

502 是网关、服务器方面的报错码。

502原因

错误的原因找到了,是 TortoiseGit 配置192.168.2.254的代理挂了,把 Enable Proxy Server 关闭保存就可以了。

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐