通常情况下,很多公司会将代码托管到GitLab或者第三方平台上(如阿里)进行管理,而我们自己的开源项目等通常是托管到GitHub上,每个托管网站都对应一个Git账户。 默认情况下,一台电脑上的Git对应一个Git账户,也就只能往一个网站push代码,很不方便,尤其是对于用自己的电脑用来办公,操作不好,很容易产生冲突。 本篇文章将以双账户为例,详细介绍如何在一个Mac Git终端配置多个账户,同时管理多个托管网站的代码
同电脑绑定两个git帐号(GitHub和GitLab)
一个Git终端如何配置多个Git仓库和账户
git config —global credential.helper
配置步骤
生成各自git账户的密钥
利用邮箱生成对应的git账户密钥
# 默认生成的密钥文件在~/.ssh/id_rsa下
ssh-keygen -t rsa -C 邮箱名
# 指定密钥生成文件为~/.ssh/id_rsa_2
ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C 邮箱名
# 或者
#1)进入到 .ssh目录下,利用账户邮箱生成密钥
cd ~/.ssh
ssh-keygen -t rsa -C "邮箱名"
#2)执行上述命令后,会有如下提示
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/bigdata/.ssh/id_rsa):
冒号后是给生成的密钥起个名字,每个账户要区分开来,以github为例,命名为id_rsa_github
#3)接下来的提示都直接进行回车,直到秘钥生成
将生成的私钥添加到本地
# 将私钥添加到本地
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_2
# 查看是否添加成功
ssh-add -l
配置本地私钥
- 在~/.ssh/下新建config文件 ```bash cd ~/.ssh
touch config
vim config
网站的别名
Host gitlab.xxx.com
托管网站的域名
HostName gitlab.xxx.com
指定优先使用哪种方式验证, 支持密码和秘钥验证方式
PreferredAuthentications publickey
托管网站上的用户名, 最好写账户邮箱, 否则容易设置失败,或者git
User gitlab@126.com
使用的密钥文件
IdentityFile ~/.ssh/id_rsa
其他
Host Build software better, together HostName github.com PreferredAuthentications publickey User github@126.com IdentityFile ~/.ssh/id_rsa_github
<a name="Jq2vM"></a>
#### 将公钥添加到各自的code托管网站
> .ssh目录下的id_rsa.pub和id_rsa_github.pub中的内容复制,分别设置到GitLab和GitHub的SSH keys中
<a name="AtW1H"></a>
#### 测试是否配置成功建立连接了
> 使用config文件中配置的别名,对于GitLab和GitHub,分别执行
```bash
ssh -T gitlab.com
ssh -T github.com
# 提示类似如下信息,就说明配置成功了
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
解决存在多账户冲突
因为存在双/多账户,需要通过Git配置不同账户的用户和邮箱,这里采取GitLab用全局用户名和邮箱配置,而GitHub针对每个clone到本地的项目进行单独的用户名和邮箱配置,避免冲突
配置全局的用户名和邮箱(前提是你经常用的,如公司)
# 将公司GitLab设置为全局
git config --global user.name "公司git账户名"
git config --global user.email "公司git账户邮箱"
为GitHub上的每个repository/项目单独设置用户名和邮箱
# 注意:下述命令要到每个本地GitHub项目目录下执行,即自己的开源项目
git config user.name "自己的github名"
git config user.email "自己的邮箱"