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