github多账号管理 mac

1,199 阅读2分钟

最近打算用vercel部署nuxt项目,发现github用qq邮箱注册的并不能用,于是从新用gmail注册了一个新的github账号,然后就开始踩坑了,换了账号发现git push 总是提示 Permission denied 旧的账号.研究了一下午 总算可以了,记录一下,分享给小伙伴们!!

删除全局配置和历史账号信息

用git config --golbal user.name来全局更新name和email 即便更新了username和email,mac在git push时还是会使用历史账号的密码。解决方法如下:

  • 进入Keychain Access (不知道在哪儿的可以command+space查找)在搜索框输入'git'进行查找,将找到的文件删掉,这里保存了历史账号的信息
  • 删除之后重新用git config --global更新username和email

你以为这样就结束了吗?

如果有多个github.com的账户想要用git命令怎么办呢?

1、查看已配置的git列表

git config --list

2、清空默认的用户名和邮箱

git config --global --unset user.name
git config --global --unset user.email

3、先将电脑上有的配置删除. ~/.ssh目录下

4、给不同的git账号生成ssh-key: github和gitlab

  • 生成第一个key,对应第一个邮箱地址
### github 账号
ssh-keygen -t rsa -C "yourmail@gmail.com"

### gitlab/或公司其他git仓库 账号
ssh-keygen -t rsa -f ~/.ssh/id_rsa_work -C "yourmail@123.com"

首次运行管它一路回车就对了 ,不指定名称默认会生成两个文件在~/.ssh/id_rsa和id_ras.pub

  • 将公钥文件添加对github和gitlab中

  • 把id_ras.pub里头的key复制在github/settings/key中填入如下: title随便写

  • 同样方法生成第二个key这时候就不要一路回车了,根据提示生成另一个名称 比如 id_rsa_work 同样记得把pub里的key复制到对应sshkey设置中

5、添加到ssh-agent信任列表

# 添加github的到信任列表
ssh-add ~/.ssh/id_rsa

# 添加work的到信任列表
ssh-add ~/.ssh/id_rsa_work

6、在~/.ssh生成config文件


Host github.com
    User github
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# work
Host work
    User xxx
    HostName http://xx.xx.xx.xx
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_work

  • config文件在 /Users/Mac的名称/.ssh/config ,如果没有,创建一个
  • Host:随意写,但是最好和HostName保持一致
  • Hostname:必须写正确,就是git的公有地址github.com/公司git地址
  • IdentityFile:必须写正确,rsa的具体地址
  • User:随意写,建议好区分,如使用host的前面部分

7、测试链接

ssh -T git@github.com

出现这段提示就是成功了: Hi xxx! You've successfully authenticated

8、重新设置用户user

git config --global user.name "xx"
git config --global user.email "xx@xx"

9、git clone或git remote的时候 如果不成功地址可以改下测试看看

不同的账号地址可能需要该,如果push不成功或者clone不成功 ,这个我也不确定 ,得验证下

正常地址应该类似是: git@github.com:xxx/storybook.git

改为 : config设置的host对应的值如: git@work:xxx/storybook.git