我们工作时一般都是使用gitlab,工作电脑也一般配置的 git 是连接 gitlab 的,那么当我们如果想用同一个电脑实现不同仓库根据自己的需要到底是推送代码到github还是 gitlab,以及使用哪个账号,(比如如果想用工作电脑维护自己的 github 项目,但是怕后面被公司追究用工作电脑干私事,省点心力),可以按照如下教程配置一下 git,新配置一个 git,把 git 的公钥放到 github,使用 git 命令修改指定仓库的git用户名和邮箱,这样这个仓库就能按照我们设置的账号提交代码到 github了。

具体步骤

1、生成新的公钥文件

id_rsa_github 后缀可以按照自己的需求修改,最后是你的 github 所绑定的邮箱,执行命令后,一路按回车就行

ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C "xxx@qq.com"

2、配置新 git 公钥到 github

进入 ~/.ssh 文件夹下,会看到 2 个新文件, id_rsa_githubid_rsa_github.pubid_rsa_github.pub存的就是公钥。
执行more id_rsa_github.pub 命令查询公钥。复制输出的所有内容,进入 github 的 ssh 配置页面,添加公钥。

一台电脑配置两个Git账号(github和gitlab),不同仓库使用不同的git_用户名

3、修改 config 文件

在 .ssh/config 文件中配置新 git 账号的用户名和github域名

# gitlab
Host gitlab.com
  HostName gitlab.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa
  User zhangsan # gitlab用户名

# github
Host github.com
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_github
  User zhangsan123 # github 用户名,不一定要跟 github 用户名相同,可以自定义想叫的名字,但是需要跟下面配置的 git 用户名保持一致

4、测试能否连接 github成功

执行 ssh -T git@github.com,如果输出如下内容说明是连接成功。

Hi luoChunhui-1024! You've successfully authenticated, but GitHub does not provide shell access.

5、设置指定仓库使用 github 账号来进行 git 提交

git clone 拉取仓库或者 git init 仓库后,进入指定仓库,执行如下命令,就成功把该仓库设置成使用新 git 账号来提交代码了,可以提交一些代码变更测试一下。

git config user.email "xxx@xx.com"
git config user.name "zhangsan123" # 需要跟 config 文件里设置的用户名保持一致

参考

一台电脑配置两个Git账号

一台电脑绑定两个git帐号(GitHub和GitLab)

附录

可以使用以下 Git 命令来查看你配置的邮箱和用户名:

查看全局配置的邮箱和用户名(适用于所有项目):

git config --global user.email
git config --global user.name

查看当前项目配置的邮箱和用户名:

git config user.email
git config user.name