最近打算用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