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 --list2.生成各账号专用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 目录下面,默认就会使用这个配置了!