git多用户配置
场景
github的用户名与gitlab用户名不一样,全局设置git user.name 导致提交到所有仓库的用户名是一个
现在需要区分开,各自维护自己的git用户名
清除全局配置
查看全局配置信息
1 | git config --global --lists |
全局配置中有 user.name 和 user.email 信息,请执行以下命令将其清除掉:
1 | git config --global --unset user.name |
生成钥对
生成对应的用户密钥
1 | ssh-keygen -t rsa -C "xxxx@gmail.com" |
按下 ENTER 键后,会有如下提示:
1 | Generating public/private rsa key pair. |
输入公钥的名字,默认情况是叫 id_rsa,为了和后面的 gitlab 配置区分,这里输入 id_rsa_github, 输入完毕后,一路回车,钥对就生成完毕了
继续开始生成 gitlab 上的仓库钥对,步骤和上面一样:
1 | ssh-keygen -t rsa -C "xxxx@test.com" |
生成的公钥名就叫做:id_rsa_gitlab
将公钥添加到 SSH Keys 中
将id_rsa_github.pub 和 id_rsa_gitlab.pub 内容分别添加到 github 和 gitlab 的 SSH Keys 中
添加私钥
执行如下命令将私钥添加到本地
1 | ssh-add ~/.ssh/id_rsa_github // 将 GitHub 私钥添加到本地 |
验证私钥
执行 ssh-add -l 验证下,如果都能显示出来和下面一样,就 OK 了
1 | 2048 SHA256:mXVNxWHZsZpKOnHlPslF2jXAWR+jc7M6P5hYbrCo xxx@gmail.com (RSA) |
管理密钥
在本地创建一个密钥配置文件,通过该文件,实现根据仓库的 remote 链接地址自动选择合适的私钥
编辑 ~/.ssh 目录下的 config 文件,如果没有,请创建
1 | vim ~/.ssh/config |
配置如下:
1 | Host github |
该文件分为多个用户配置,每个用户配置包含以下几个配置项:
Host:仓库网站的别名,随意取
HostName:仓库网站的域名(IP 地址应该也可以)
User:仓库网站上的用户名
IdentityFile:私钥的绝对路径
ssh -T 命令检测 Host连通性
1 | ssh -T git@github |
输出如下
1 | Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. |
仓库配置
git 的配置分为三级别,System —> Global —>Local。System
即系统级别,Global 为配置的全局,
Local 为仓库级别,优先级是 Local > Global > System
为每个仓库单独配置用户名信息,在仓库里执行
1 | git config --local user.name "xxxx" |
看本仓库的所有配置信息
1 | git config --local --list |