技术分享
Git

Git添加多账号多配置

逍十一郎逍十一郎
2022年9月9日
2

简述

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

不同的项目,不同的配置

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

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

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

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

1$ git config user.name "xxxx" 2$ 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# gitee 2Host gitee.com 3HostName gitee.com 4PreferredAuthentications publickey 5IdentityFile ~/.ssh/gitee_id_rsa 6# github 7Host github.com 8HostName github.com 9PreferredAuthentications publickey 10IdentityFile ~/.ssh/github_id_rsa
  • 把对应的公钥 xxx.pub 内容复制到对应的服务器 SSH Key 配置中
  • 测试
1$ ssh -T git@gitee.com 2$ ssh -T git@github.com

简述

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

不同的项目,不同的配置

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

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

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

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

1$ git config user.name "xxxx" 2$ 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# gitee 2Host gitee.com 3HostName gitee.com 4PreferredAuthentications publickey 5IdentityFile ~/.ssh/gitee_id_rsa 6# github 7Host github.com 8HostName github.com 9PreferredAuthentications publickey 10IdentityFile ~/.ssh/github_id_rsa
  • 把对应的公钥 xxx.pub 内容复制到对应的服务器 SSH Key 配置中
  • 测试
1$ ssh -T git@gitee.com 2$ ssh -T git@github.com

评论讨论

评论需要审核后才能显示