Git 代理配置方案

文章目录
  1. 1. 设置代理
  2. 2. 设置仓库
  3. 3. 设置 Git
    1. 3.1. 提升安全性
    2. 3.2. Windows

国内连 Github 是个很头疼的问题。浏览器还好,只要电脑挂了代理一般就没什么问题;主要是终端使用有些麻烦。折腾出来的最佳实践如下。

部分来自:https://molunerfinn.com/git-ssh2https/

设置代理

首先,代码仓库尽量使用 HTTPS 协议,也就是以 https://github.com 开头的链接,而不是以 `git@github.com开头的 SSH 链接,这样就可以通过git config` 方便地设置代理:

1
git config --global http.proxy 'socks5://127.0.0.1:1080'

网上广泛流传的针对 https.proxy 也设置一遍代理是不必要的。

注意,这样设置后 push 时可能会提示

1
ServicePointManager 不支持具有 socks5 方案的代理

但是仍然能 push 成功。最好的解决方法是在本地使用 HTTP/HTTPS 代理,例如:

1
git config --global http.proxy 'http://127.0.0.1:1081'

具体的端口视你电脑本地的代理软件(Shadowsocks、Clash等)而异。

设置仓库

以上设置只针对使用 HTTPS 协议的仓库有效,如果已经使用了 SSH 协议,则可以如此修改:

1
git remote set-url origin https://xxxxx #your https repo url

查看是否修改成功:

1
2
3
git remote -v
origin https://github.com/xxx/xxx.github.io.git (fetch)
origin https://github.com/xxx/xxx.github.io.git (push)

设置 Git

使用 HTTPS 协议后 push 时需要密码,我们可以将密码保存起来,免得重复输入。编辑或新建文件:

1
vi ~/.git-credentials

添加一行:

1
https://用户名:密码@github.com

保存退出,然后执行:

1
git config --global credential.helper store

即可。

提升安全性

以上可见用户名与密码是明文存储在配置文件中的,如果你觉得不够安全可以继续下面的步骤。

对于 Mac 而言,可以将 git 默认的 credential.helper 指定成 osxkeychain

1
$ git config --global credential.helper osxkeychain

然后可以通过

1
2
$ git config credential.helper
osxkeychain

来查看是否指定成功了。之后用户名密码将会保存在系统自带的 keychain access 里,也就是通过 macOS 的钥匙链管理密码。

Windows

使用微软开发的Git-Credential-Manager-for-Windows

最新版下载地址:https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/latest

安装之后,在控制台里输入:

1
git config --global credential.helper manager

之后还是一样的,某个项目里输入用户名密码之后,以后就再也不用输入了。你可以在管理网络密码里找到你的用户密码——其实不是密码,而是 token 了,因为 Git-Credential-Manager-for-Windows 它会自动调用 Github 的 API 生成 Personal access tokens,你可以在你的 Github 的 `Personal settings 找到它。