之前有写过 一篇文章 讲如何在 Git 中配置 ssh 多密钥管理,达到方便地切换 Git 使用的 ssh 的目的。

但是相信你能明显感觉到 ssh 比 https 慢了许多倍,而 ssh 多密钥管理,只有修改 ssh 里的 host 为你的配置 host 才有效,显然不能在 https 协议的 url 下生效。

不过不用担心,因为咱们遇到的难题其实很早就有人解决过了,今天就让咱来分享一下如何在 Git 上使用 HTTPS 的多账户管理。

Windows

由于咱只有 Windows 设备,所以只说 Windows 下的方法吧(如果以后有了别的设备可能会回来填坑?)。

安装

在 Windows 下,咱们要使用到的工具 Git Credential Manager 在新版 Git for Windows 中是默认集成的,所以只需要将你的 Git 升级到一个并不是很远古的版本即可!(不愧是微软亲生)(BTW,安装的时候其实会有询问是否安装 GCM,保持默认就好)

使用

你可能马上想知道 GCM 要如何使用,但如果你曾经使用过 HTTPS 协议来 push 代码的话,咱想你可能已经不知不觉中使用过它了。

没错,Git 在使用 HTTPS push 的时候,会打开你的浏览器进行验证 GitHub 账号(或者是你 push 目标网站的账号),一旦验证完成,这将成为这台计算机对这个网站 HTTPS push 的默认凭证!

如果是不同网站,GCM 会自动进行区分。而如果你要在同一个网站上使用不同身份,则需要修改 URL,具体修改格式如下:

https://example.com/open-source/library.git => https://[email protected]/open-source/library.git

只需要在网站域名前加上 [email protected] 即可。其中 identity 一般是网站的唯一用户名,根据你所 push 的目的不同,identity 规则可能会有点不同。

The End

GCM 这个好东西真的是相见恨晚呐,不仅使用起来比 ssh 多密钥管理方便,HTTPS push 还比 ssh push 要快得多~

不过这是 Windows 上的使用,别的操作系统可能因为不是微软亲生所以会稍微麻烦那么一点点。

Windows 用户在搜索栏中输入 管理网络密码 即可查看当前计算机上保存的凭证。

参考

  1. Caching your GitHub credentials in Git
  2. Multiple users - git-credential-manager