场景描述
对于程序员来说,我们会经常讲代码上传托管到GitHub等代码平台上。然而一般情况下,同一台电脑Git智能配置一个Git账户,只能向一个网站push,当我们如果需要使用多个Git账户时会发现非常的不方便。有时我们需要在同一台电脑上同时配置安装多个Git账户,例如同时配置公司的GitLab账户和自己私有的GitHub账户。这篇文章就是讲述在MAC下如何同时配置多个Git账户。
概述
配置多个Git账户主要包括如下几个步骤:
- 取消全局配置
- 对每个账户生成各自的秘钥
- 私钥添加到本地
- 公钥添加到网站
- 对本地秘钥进行配置
1. 取消全局配置
当我们为单独Git配置时,一般会调用如下的Git指令为当前电脑的配置全局的Git name和email。
git config --global users.name "XXX"
git config --global users.email "XX@XX.com"
这会为Git设置一个整体name和email,意味着即使是不同的Git仓库使用的Git账户也是同一个Git配置。但是当我们需要添加多个Git账户时,采用全局的Git配置显然是不合适的,需要针对于每一个不同的Git仓库进行单独的Git设置。
使用如下命令可以查看当前Git账户和邮箱:
git config --global user.name
git config --global user.email
如果之前已经使用了该命令进行配置,则可以使用如下命令进行清除全局邮箱和全局名称。
git config --global --unset user.name
git config --global --unset user.email
清除掉当前的邮箱和名称之后,需要进入到具体的项目中调用如下命令针对每个项目进行单独的设置:
git config user.email "XXX@XX.com"
git config user.name "XXX"
设置之后,如果不记得当前项目设置的名称和邮箱,可以输入如下命令进行查看:
git config user.email
git config user.name
如果查看到设置的不正确,再按照上述步骤进行单独设置。
2. 对每个账户生成各自的秘钥
首先进入到保存秘钥的目录:
cd ~/.ssh
//进入到目录,此目录下保存生成秘钥
然后根据账户邮箱生成秘钥,命令如下:
ssh-keygen -t rsa -C "XXX@XX.xom"
输入完成后,会有如下提示:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xx/.ssh/id_rsa):
当看到如上指示的时候,则表示此时需要对生成的秘钥文件进行重命名,默认文件名是id_rsa
。此时由于需要设置多个账户,在此需要对此文件进行重新命名以区分多个账户。在此示例取名:id_rsa_github
。之后设置密码可以直接按回车,直至秘钥生成,在秘钥目录下可以看到两个文件id_rsa_github
和id_rsa_github.pub
。
对于另外的GitLab的账户,可以采用相同的步骤进行生成秘钥id_rsa_gitlab
。
3. 将私钥添加到本地
SSH协议的原理,就是在本地使用私钥,在网站上使用公钥,这样本地仓库就可以和远程仓库进行通信,可以输入如下指令将私钥添加到本地:
ssh-add ~/.ssh/id_rsa_github //将github私钥添加到本地
ssh-add ~/.ssh/id_rsa_gitlab //将Gitlab私钥添加到本地
4. 公钥添加到网站
如上部所说,还需要将公钥添加到网站。在此以github为例进行简单说明:
首先复制公钥,就是id_rsa_github.pub
文件中的内容进行复制,打开github并登陆,点击头像选择setting
选项,在SSH and GPG keys
项,将之前复制的内容粘贴进去,点击add SSH key添加key。
添加之后可以通过输入如下指令查询是否配置成功:
ssh -T git@github.com
5. 本地秘钥配置
由于添加了多个秘钥文件,因此需要对秘钥进行配置管理。
在.ssh(秘钥文件所在文件夹)目录下新建config文件,使用文档打开此文件并在文件配置如下内容:
Host github // 网站的别名,随意取
HostName github.com // 托管网站的域名
User XX // 托管网站上的用户名
IdentityFile ~/.ssh/id_rsa_github // 使用的密钥文件
// GitLab的配置相同
Host gitlab
HostName gitlab.com
User XX
IdentityFile ~/.ssh/id_rsa_gitlab
总结
设置多Git账户的核心内容是为不同的Git设置不同的秘钥并分别配置,完成上述几步之后即可使用多Git。