简述

在实际开发中,我们经常碰到有关 Git 多账号的两种情况,一种是:不同的项目有不同的配置需求,比较常见的就是用户名或者邮箱不一样。第二种是:同一台电脑,需要拉取不同服务器的工程,且使用的邮箱不一样,这个时候需要配置 SSH 相关的 key,例如 Gitee,Github,或者公司的 Git 的地址。那么如何去解决这两个问题呢?

不同的项目,不同的配置

在 Git 使用中,我们都知道使用git config来配置 git 需要使用的相关配置。一般如下使用:

1
2
$ git config --global user.name "xxxx"
$ git config --global user.email "xxxx@gmail.com"

上面这种配置方式,加上了--global参数,这个参数表示当前的配置为全局配置,即所有 Git 工程都会使用该配置。

但是 Git 还有一种配置方式,就是不加上--global参数。如果不加上这个参数,表示当前的配置只添加到当前的项目,如下:

1
2
$ git config  user.name "xxxx"
$ git config  user.email "xxxx@gmail.com"

当我们使用git config --list查看时,可以看到会有两个配置user.nameuser.email。Git 读取配置时,会优先读取本项目的配置,没有则去读取全局配置,这样就可以实现不同项目,使用不同的配置–不加上--global参数。

不同 Git 服务器,添加不同的 SSH

主要的思路是为不同的 Git 服务器,配置不同的 SSH key 值。比如要为 Gitee 和 Github 生成不同的 key,具体的步骤:

  • 为 Gitee 的邮箱账号配置不同的 key 值

    1
    
    $ ssh-keygen -t rsa -C 'xxxxx@163.com' -f ~/.ssh/gitee_id_rsa
  • 为 Github 的邮箱账号配置不同的 key 值

    1
    
    $ ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
  • 在 ~/.ssh 目录下新建一个 config 文件,添加如下内容(其中 Host 和 HostName 填写 git 服务器的域名,IdentityFile 指定私钥的路径)。如下例子:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    # gitee
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee_id_rsa
    # github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_id_rsa
  • 把对应的公钥 xxx.pub 内容复制到对应的服务器 SSH Key 配置中

  • 测试

    1
    2
    
    $ ssh -T git@gitee.com
    $ ssh -T git@github.com

简述

在实际开发中,我们经常碰到有关 Git 多账号的两种情况,一种是:不同的项目有不同的配置需求,比较常见的就是用户名或者邮箱不一样。第二种是:同一台电脑,需要拉取不同服务器的工程,且使用的邮箱不一样,这个时候需要配置 SSH 相关的 key,例如 Gitee,Github,或者公司的 Git 的地址。那么如何去解决这两个问题呢?

不同的项目,不同的配置

在 Git 使用中,我们都知道使用git config来配置 git 需要使用的相关配置。一般如下使用:

1
2
$ git config --global user.name "xxxx"
$ git config --global user.email "xxxx@gmail.com"

上面这种配置方式,加上了--global参数,这个参数表示当前的配置为全局配置,即所有 Git 工程都会使用该配置。

但是 Git 还有一种配置方式,就是不加上--global参数。如果不加上这个参数,表示当前的配置只添加到当前的项目,如下:

1
2
$ git config  user.name "xxxx"
$ git config  user.email "xxxx@gmail.com"

当我们使用git config --list查看时,可以看到会有两个配置user.nameuser.email。Git 读取配置时,会优先读取本项目的配置,没有则去读取全局配置,这样就可以实现不同项目,使用不同的配置–不加上--global参数。

不同 Git 服务器,添加不同的 SSH

主要的思路是为不同的 Git 服务器,配置不同的 SSH key 值。比如要为 Gitee 和 Github 生成不同的 key,具体的步骤:

  • 为 Gitee 的邮箱账号配置不同的 key 值

    1
    
    $ ssh-keygen -t rsa -C 'xxxxx@163.com' -f ~/.ssh/gitee_id_rsa
  • 为 Github 的邮箱账号配置不同的 key 值

    1
    
    $ ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
  • 在 ~/.ssh 目录下新建一个 config 文件,添加如下内容(其中 Host 和 HostName 填写 git 服务器的域名,IdentityFile 指定私钥的路径)。如下例子:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    # gitee
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee_id_rsa
    # github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_id_rsa
  • 把对应的公钥 xxx.pub 内容复制到对应的服务器 SSH Key 配置中

  • 测试

    1
    2
    
    $ ssh -T git@gitee.com
    $ ssh -T git@github.com