多环境git 配置
生成 SSH 公钥
默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:
$ cd ~/.ssh
$ ls
authorized_keys2 id_dsa known_hosts
config id_dsa.pub
如果已经生成密钥无需再更新,密钥可以对应多台 git 服务器。直接复制 id_dsa.pub 到 ssh key 中即可。 其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是与之对应的私钥。
自定义公钥匙名称
由于我们需要生成各个环境(gitlab、github) 的公钥,所以我们要自定义名称
ssh-keygen -f ~/.ssh/customFileName -C "邮箱地址"
// 例如
ssh-keygen -f ~/.ssh/github_rsa -C "my.163.com" // github 密钥公钥
ssh-keygen -f ~/.ssh/gitlab_rsa -C "my.163.com" // gitlab 密钥公钥
github、gitlab 添加公钥
将 ~/.ssh/github_rsa 和 ~/.ssh/gitlab_rsa 公钥复制后添加到github和gitlab中。
github
gitlab
根据域名定义使用不同的密钥
我们要有多份密钥管理需要在对应文件夹下新建config 文件 ~/.ssh/config 添加不同域名下使用的密钥
# gitlab
Host 192.168.1.7
HostName 192.168.1.7
User git
IdentityFile ~/.ssh/id_rsa.gitlab
# githab
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_rsa
git config
Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:
- /etc/gitconfig 文件:包含系统上每一个用户及他们仓库的通用配置。
- ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。
- 当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。
我想为电脑上的不同项目设置不同的 git 用户信息配置,在 ~/.gitconfig 中添加配置如下:
[includeIf "gitdir:/Users/huifei/Documents/company/"]
path = .gitconfig-work
[includeIf "gitdir:/Users/huifei/Documents/try/"]
path = .gitconfig-self
可以看到,我工作的项目都放在 company 目录下,他们都是连接 gitlab,而 try 目录下都是连接 github 的。我将他们根据路径分别设置了 .gitconfig-work 和 .gitconfig-self 的配置。
# .gitconfig-work
[user]
name = gitlabname
email = youremail
# .gitconfig-self
[user]
name = githuabname
email = youremail
触发时机
-
git commit
- 会触发
~/.gitconfig
配置,可以通过 git log 查看提交信息的用户信息。 - 如果发现用户名不对可以重置用户信息: git commit --amend --reset-author
- 会触发
git push
- 会读取
~/.ssh/gitlab_rsa
的ssh key进行和服务器身份验证
参考
转载自:https://juejin.cn/post/6951589523625082893