通常情况下,很多公司会将代码托管到GitLab或者第三方平台上(如阿里)进行管理,而我们自己的开源项目等通常是托管到GitHub上,每个托管网站都对应一个Git账户。 默认情况下,一台电脑上的Git对应一个Git账户,也就只能往一个网站push代码,很不方便,尤其是对于用自己的电脑用来办公,操作不好,很容易产生冲突。 本篇文章将以双账户为例,详细介绍如何在一个Mac Git终端配置多个账户,同时管理多个托管网站的代码

同电脑绑定两个git帐号(GitHub和GitLab)
一个Git终端如何配置多个Git仓库和账户
image.png

git config —global credential.helper

配置步骤

生成各自git账户的密钥

利用邮箱生成对应的git账户密钥

  1. # 默认生成的密钥文件在~/.ssh/id_rsa下
  2. ssh-keygen -t rsa -C 邮箱名
  3. # 指定密钥生成文件为~/.ssh/id_rsa_2
  4. ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C 邮箱名
  5. # 或者
  6. #1)进入到 .ssh目录下,利用账户邮箱生成密钥
  7. cd ~/.ssh
  8. ssh-keygen -t rsa -C "邮箱名"
  9. #2)执行上述命令后,会有如下提示
  10. Generating public/private rsa key pair.
  11. Enter file in which to save the key (/Users/bigdata/.ssh/id_rsa):
  12. 冒号后是给生成的密钥起个名字,每个账户要区分开来,以github为例,命名为id_rsa_github
  13. #3)接下来的提示都直接进行回车,直到秘钥生成

将生成的私钥添加到本地

  1. # 将私钥添加到本地
  2. ssh-add ~/.ssh/id_rsa
  3. ssh-add ~/.ssh/id_rsa_2
  4. # 查看是否添加成功
  5. ssh-add -l

配置本地私钥

  1. 在~/.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

  1. <a name="Jq2vM"></a>
  2. #### 将公钥添加到各自的code托管网站
  3. > .ssh目录下的id_rsa.pub和id_rsa_github.pub中的内容复制,分别设置到GitLab和GitHub的SSH keys中
  4. <a name="AtW1H"></a>
  5. #### 测试是否配置成功建立连接了
  6. > 使用config文件中配置的别名,对于GitLab和GitHub,分别执行
  7. ```bash
  8. ssh -T gitlab.com
  9. ssh -T github.com
  10. # 提示类似如下信息,就说明配置成功了
  11. Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

解决存在多账户冲突

因为存在双/多账户,需要通过Git配置不同账户的用户和邮箱,这里采取GitLab用全局用户名和邮箱配置,而GitHub针对每个clone到本地的项目进行单独的用户名和邮箱配置,避免冲突

  1. 配置全局的用户名和邮箱(前提是你经常用的,如公司)

    1. # 将公司GitLab设置为全局
    2. git config --global user.name "公司git账户名"
    3. git config --global user.email "公司git账户邮箱"
  2. 为GitHub上的每个repository/项目单独设置用户名和邮箱

    1. # 注意:下述命令要到每个本地GitHub项目目录下执行,即自己的开源项目
    2. git config user.name "自己的github名"
    3. git config user.email "自己的邮箱"