git 配置多个github(gitee)账号

发布于 2024-04-26  2 次阅读


由于 Git 所具有的巨大优越性,越来越多的公司以及个人开始由 Svn 转向 Git 。一般来讲,每位员工都会被分配给一个公司内部的邮箱。比如一个 996 公司的员工 “张三”,获得的可能就是一个 “[email protected]” 的邮箱。比较规范的公司,就会要求我们使用自己的名字和公司所分配给自己的这个邮箱来配置 Git(姓名和邮箱可以不用引号括起来):

git config --global user.name "张三"
git config --global user.email "[email protected]"

但是这种配置是全局的,如果我们之前刚好有在 GitHub 上维护项目,那这样势必就会将之前所做的 Git 账户配置给覆盖了。那怎么解决呢?我们总不能来回覆盖,来回添加密钥吧。我们能不能同时配置多个 Git 账户呢?

因为工作学习需求,我有多个github和gitee以及其他git平台的账号,但git默认情况下只能设置一个gloub全局用户

这让我切换多个账号时感到十分麻烦,接下来给大家分享一下我的方法:

1. 清空默认的全局 user.name 和 user.email

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

查看git配置: git config --global --list

2.生成各账号专用ssh私钥公钥

以 “张三” 为例,首先,我们需要根据公司邮箱来生成密钥对:

ssh-keygen -t rsa -C "[email protected]"

回车后会出现下面这句话:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/zhangsan/.ssh/id_rsa):

这时候可千万别一路回车,注意看提示,这里要我们输入要保存的私钥的路径和文件名,为了以后易找,我们就仍然放在该路径下,只不过更改个跟平台相关的文件名,输入:

#示例,根据具体路径修改
/Users/zhangsan/.ssh/996icu_id_rsa

接着就可以一路回车了,默认密码为空即可。

生成完密钥之后,我们还需要使用ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add,用法如下:

#进入ssh-agent
ssh-agent -s
#添加私钥
ssh-add ~/.ssh/996icu_id_rsa

之后我们需要将生成的密钥对中的公钥里的内容用文本编辑器打开,复制下来,添加到对应的平台上面,比如公司的 GitLab 或者 GitHub 等。

3.多账户设置方法

3.1设置私钥根据域名自动选择

我们可以直接使用域名解析,设置每个平台默认的用户和ssh密钥

这种需求很常见,打开 ~/.ssh/config 文件(没有可以新建一个)配置如下:

Host one.github.com
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_one.id_rsa
Host two.github.com
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_two_id_rsa

Host gitlab.com
    Hostname gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab_id_rsa

进行测试

ssh -T two.github.com

到这里,多账号的配置基本上已经完成了,

3.2.设置自动切换git提交用户名与email

但是还有一个不足的地方就是虽然私钥根据域名自动选择了,但是提交的配置还是共享 .gitconfig 中的配置,例如 user.name 和 user.email,能不能根据仓库所在的不同位置选择不同的全局配置文件呢?答案是可以的,打开 ~/.gitconfig 文件,在末尾添加下面的配置:

[includeIf "gitdir:~/work/gitlab/"]
    path = .gitconfig-gitlab

然后再建一个 ~/.gitconfig-gitlab 文件,里面写全局配置,例如:

[user]
    name = zhansan
    email = [email protected]

那么只要仓库被放到了 ~/work/gitlab 目录下面,默认就会使用这个配置了!

是一名喜欢每天折腾的咸鱼! 也是一名半退役的算竞摸鱼选手,参与过icpc,天梯赛,蓝桥等比赛.Datawhale 成员及优秀队长 --------------------------------------------------- 认证类: 华为 Harmony OS应用开发者高级认证, NISP 一级认证, H3C NE-RS网络工程师认证 --------------------------------------------------- 荣获奖项荣誉: 第十八届“挑战杯”全国大学生课外学术科技作品竞赛 “揭榜挂帅”专项赛-全国特等奖、 “美亚杯”第八届中国电子取证大赛 三等奖、 中国高校计算机大赛-团体程序天梯赛 省高校一等奖、 “蓝桥杯”省一等奖、 H3C新华三杯 省三等奖、 中国移动“梧桐杯”大数据创新大赛 省三等奖、 百度 飞桨领航团 金牌团长
最后更新于 2024-04-26