Git 多账号的配置

227 阅读1分钟

Git 多账号的配置

最近有项目使用 Github 管理代码,由于公司和个人账号使用了不同账号,所以需要切换不同 Github 账号。

尝试了几种方法都不可行:

1.用账号/密码的方式登录:发现 Github 已经不支持账号/密码的方式登录。

2.用 git config 命令来配置:发现只能修改 push 的 email 等信息,并不能实际切换账号(还是根据默认位置的公钥去匹配的Github账号 ~/.ssh/id_rsa)。

查了一些资料,提供两种可行方案:

HTTPS 的方式:

原来的账号/密码的方式改为了 username / access_token 的方式。但是 access token 的方式限制多一点,比如需要额外设置、有效期最长一个月等,使用起来相对不方便,但安全性更高。(参考)

SSH 的方式:

默认情况下,通过 SSH 的方式去访问仓库的话会根据默认位置( ~/.ssh/id_rsa) 的公钥去匹配账号。

实际上,我们是可以修改 SSH 的配置,从而达到根据 Host 匹配不同的 SSH key 再匹配相应的账号。

第一步

生成另外一个 SSH key (参考)

第二步

修改 ~/.ssh/config下的配置,给不同 Github 账号设置以下几种配置。

Host example                  # 关键字/别名
HostName github.com           # 主机地址
User git                      # 用户名
IdentityFile ~/.ssh/id_rsa    # 认证文件# work github account
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# personal github account
Host github-personal.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal

第三步:

以 Flutter 仓库为例,默认 git 链接为 https://github.com/flutter/flutter.git

修改 Host 部分以达到根据 Host 匹配不同 SSH key 的目的,修改后的链接:

使用工作账号 work github account

git remote add https://github.com/flutter/flutter.git

使用个人账号 personal github account

git remote add https://github-personal.com/flutter/flutter.git

参考

About remote repositories
SSH config使用教程和总结