文章目录
使用需求
通常情况下,我们会有两个 github 账号:一个是公司的,另一个是私人的。由于 github 是使用 SSH key 的 fingerprint (对应的公钥id_rsa_pub)来判定你是哪个账户,而不是通过用户名,如果是在多台电脑上使用一个账号,可以为该账号添加多个 SSH key,如果是一台电脑使用多个账号,则分别生成多个 SSH key 添加到对应的账户即可。所以本文要实现的是公号和私号在 git 上同时使用,两者互不干扰。
步骤一:生成多个 SSH key
为了举例方便,这里使用 “one” 和 “two” 两个账户。
使用cd ~/.ssh
切换工作目录,然后使用如下命令生成两个钥匙,中间一路回车。
ssh-keygen -t rsa -f ~/.ssh/id_rsa_one -C "one@xxx.com"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_two -C "two@xxx.com"
这样会在~/.ssh
目录下生成四个文件:
id_rsa.one //账号 one 的私钥
id_rsa.one.pub //账号 one 的公钥
id_rsa.two
id_rsa.two.pub
步骤二:创建配置文件 config
在 ~/.ssh
目录下新建 config 文件,令不同 Host 实际映射到同一 HostName,但密钥文件不同。
$ touch config // 创建 config
$ vim config // 编辑 config
# 加上以下内容
# one (first account)
Host one.github.com
HostName github.com
PreferredAuthentications publickey
User one
IdentityFile ~/.ssh/id_rsa_one
# two(second account)
Host two.github.com
HostName github.com
PreferredAuthentications publickey
User two
IdentityFile ~/.ssh/id_rsa_two
步骤三:添加 SSH key 及 测试
分别登陆两个 github 账号,在 Settings —> SSH and GPG keys 中,点击 “new SSH key”,把 “id_rsa.one.pub” 和 "id_rsa.two.pub"这两个公钥的内容分别添加到相应的账号中。
为了确认我们可以通过 SSH 连接 github,可通过输入下面命令来验证
$ssh -T git@one.github.com
如果看到下面信息,就说明连接正常。
Hi one! You've successfully authenticated, but GitHub does not provide shell access.
该步骤详细内容可以参考教程:使用 SSH 连接 github
步骤四:用户名和邮箱配置
注意:因为一台电脑上配置了多个 github 账号,所以就不能再配置全局的用户名和邮箱了,而是在不同的仓库下,如果需要连接不同的 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"
步骤五:使用 git
git 的使用一般是从其他仓库直接 clone 或本地新建,注意配置用户名和邮箱。
1、clone 到本地
- 原来写法
$ git clone git@github.com: 用户名/learngit.git
- 现在写法
$ git clone git@one.github.com: one的用户名/learngit.git
$ git clone git@two.github.com: two的用户名/learngit.git
如果有需要重建 origin,可以执行下面操作
$git remote rm origin //清空原有的
$git remote add origin git@one.github.com:one/test.git
2、本地新建仓库
# 建立本地仓库
$git init
...//其他操作
$git commit -m "first commit"
# push 到 github上去
$ git remote add origin git@one.github.com:one/test.git
$ git push origin master
这样就实现了一台电脑管理两个 github 账号,接下来可以进行 git 的其他操作。
参考文章
1、https://www.cnblogs.com/xjnotxj/p/5845574.html
2、https://www.jianshu.com/p/3fc93c16ad2d
3、https://blog.csdn.net/mq2856992713/article/details/62090841
4、https://blog.csdn.net/wolfking0608/article/details/78512171