背景
因探索新技术需要,经常需要写一写小demo。不方便写在公司项目中。所以自己新建了一个项目专门用于写demo和学习新东西。公司有github账号,自己也有github账号,希望两者在同一台电脑上使用,互不干扰。
解决方案
原先配置SSH key的时候没有考虑到一台电脑使用两个git账号这种情况,所以一路默认下去,config也是使用了global,所以不能直接添加SSH key,否则会覆盖之前的公司项目SSH key。.
那该怎么操作呢?
一、生成两个SSH key
很明显,我们需要先生成两个SSH key,这简直是废话。
$ ssh-keygen -t rsa -C "work@gmail.com"
$ ssh-keygen -t rsa -C "personal@gmail.com"
注意这里不要一路回车,分别在第一个对话的时候输入重命名(id_rsa_personal和id_rsa_work),这样分别会生成公钥和私钥,大概就是这样子:
忽略上面的名称拼写错误,太懒了,不想改了,很尴尬
二、添加私钥
因为默认情况下自动识别名为id_rsa的SSH Key,如果我们改名了,自然要手动添加私钥。
$ ssh-add ~/.ssh/id_rsa_personal
$ ssh-add ~/.ssh/id_rsa_work
三、touch config文件
添加完私钥后,我们需要在.ssh文件夹下touch一个config文件,这是因为我们现在不能使用全局配置了,要为每一个SSH Key配置使用范围。
操作非常简单,只需要在.ssh文件夹下touch一个文件就行了:
$ touch config
然后再config里面添加配置:
Host //公司host就不写了
HostName gitlab.******.com
PreferredAuthentications publickey
RSAAuthentication yes
User //你的username
IdentityFile C:\Users\Administrator\.ssh\id_rsa_work
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
RSAAuthentication yes
User fcott
IdentityFile C:\Users\Administrator\.ssh\id_ras_personal
四、部署SSH key
这部分没什么好说的,到GitHub或者你用的托管网站上部署上公钥就行了。
五、使用
因为一台电脑上配置了多个git账号,所以就不能再配置全局的用户名和邮箱了,而是在不同的仓库下,如果需要连接不同的git账号,配置相应的局部用户名和邮箱即可,如果之前配置过全局的用户名和邮箱,需要取消配置:
git config --global --unset user.name
git config --global --unset user.email
然后再分别配置:
git config user.name "xxxx"
git config user.email "xxxx@xx.com"
大功告成