mac 配置多个git账号
1. 清空git全局配置的username和email
git config --global --unset user.name
git config --global --unset user.email
git config --list
可以查看是否清空了
2. 定义两个标识符,这两个标识符以后会被用来代替“github.com”来使用。
假设两个账号的邮箱地址分别是 @qq.com
和@gmail.com
,
3. 为两个账户生成公钥和私钥
两个生成中只是邮箱和文件名不同,以第一个为例。\ 生成第一个:
ssh-keygen -t rsa -C "qq.com" -f ~/.ssh/id_rsa_qq
ssh-keygen -t rsa -C "gmail.com" -f ~/.ssh/id_rsa_gmail
会有如图输出,这里是需要指定秘钥的存储路径
\ rsa是私钥,rsa.pub 是公钥。\ 这便完成了账号的生成
4. 将生成的密钥添加到ssh-agent信任列表
以第一个账号为例
ssh-add -K ~/.ssh/id_rsa_qq // 这里指定自己的路径
ssh-add -K ~/.ssh/id_rsa_gmail
// 返回这个就表示添加成功了
Identitiy added: ~/.ssh/id_rsa_{email}
进行查看验证
ssh-add -l
5. 将公钥添加到 github 网站上
先复制 .pub 文件中的内容,可以文本打开复制,也可以用命令,如下
pbcopy < ~/.ssh/id_rsa_a.pub // 这是复制第一个账号的公钥
title 随便写,key type默认如图不用修改,Key 中粘贴复制的公钥,Save。
6. 配置 config
文件
编辑 ~/.ssh/config
文件,如果没有就新建一个。内容如下:\
这里就用到了前面定义的标识符。
Host {gmail.com}
UseKeychain yes
Hostname github.com
IdentityFile ~/.ssh/id_rsa_gmail
User git
Host {qq.com}
UseKeychain yes
Hostname github.com
IdentityFile ~/.ssh/id_rsa_qq
User git
7. 测试连接
// 测试第一个账号
ssh -T git@{gmail.com}
// 测试第二个账号
ssh -T git@{qq.com}
如果连接成功能看到以下输出:
Hi xxx! You've successfully authenticated.but GitHub does not provide shell acess
即使ssh config中的文件路径配置错误,ssh -T也会通过,所以路径一定要自己检查清楚。
8. 开心的使用吧
注意地址的变化,之前是
git clone git@github.com:xxx/yyyy.git
地址的 github.com
需要被自定义的标识符替换掉,比如第一个账户是 aaccount,那么命令就是
git clone git@aaccount:xxx/yyyy.git
clone到本地后,可以使用 git remote -v
查看远程地址,就是“git@aaccount:xxx/yyyy.git”
9. 配置多账号之前已有项目的配置
如果是之前已经 clone 的项目需要重新指定 remote 地址以及需要配置项目的 email 和username。可以先试一下,如果不能使用再来改配置。
修改项目remote地址
git remote -v // 查看 remote 地址
git remote rm origin
git remote add origin git@aaccount:xxx/yyy.git // 这里是第一个账号为例
然后在每个项目中,执行:
git config user.email "{qq.com}"
git config user.name "{gmail.com}"
为项目单独设置用户名和邮箱。\ 可以查看一下:
git config user.name
git config user.email
push 的话还是照常使用:git push origin master
失败可以直接使用。变量为项目地址。
git push {ssh} {branch}
git push {https} {branch}