git配置github与gitlab推送时指定不同用户与邮箱
文章发布较早,内容可能过时,阅读注意甄别。
# 不同托管站
日常开发过程中,我们的 git 交互可能有公司内部的 gitlab 以及公共的 github,这个时候两边推送使用的用户以及邮箱可能不一样,因此不能用同一份配置来推送,本文说一下解决方案。
解决方案网上有好几种,这里记录一种配置相对简单的方式,就是利用配置文件的includeIf
参数。
添加如下配置到 ~/.gitconfig
:
$ cat ~/.gitconfig
[includeIf "gitdir:/Users/liqilong/eryajf/github/"]
path = ~/.gitconfig_github
[includeIf "gitdir:/Users/liqilong/eryajf/gitlab/"]
path = ~/.gitconfig_gitlab
[includeIf "gitdir:/Users/liqilong/eryajf/letsgo/project/src/"]
path = ~/.gitconfig_gitlab
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
注意路径结尾要以 /
结尾,表示此目录下所有项目应用下边 path 指定的配置文件。
然后再定义两个 path 对应的配置文件:
$ cat ~/.gitconfig_gitlab
[user]
name = 李启龙
email = liql@eryajf.net
[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
另外一个:
$ cat .gitconfig_github
[user]
name = eryajf
email = Linuxlql@163.com
[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
然后分别在两个目录中创建项目进行测试,发现推送的用户就变成对应定义的了。
# 相同托管站
上边举的例子是在不同代码托管站的多配置维护方案,还有一种情况是,如果我们在 GitHub 有多个账号,此时怎样维护才更加省心一些呢。
有的同学可能想到用户名和邮箱可以套上边的方式进行配置,的确可以,但是有一个问题绕不过去,那就是在 GitHub 中,同一个秘钥不能添加到不同用户账号中,
鉴于这种情况,就必须要给不同账号配置不同的秘钥对了。
网上很多地方给的方案建议修改 ~/.ssh/config
来指定不同的秘钥,但交互的时候还需要手动修改一些内容,其实也麻烦,接下来这里介绍一种相对省心的方案。
假如我有两个 GitHub 账号:eryajf 和 lql95。
然后在本地电脑有两对秘钥:
$ cd ~/.ssh
$ ssh-keygen -f "github-liql"
$ ssh-keygen -f "github-eryajf"
1
2
3
2
3
把公钥添加到账号的 setting 中这个就不介绍了,主要说一下本地的配置信息。
定义如下内容在 ~/.gitconfig
文件:
$ cat ~/.gitconfig
[includeIf "gitdir:/Users/liqilong/eryajf/github-lql95/"]
path = ~/.gitconfig_github_lql95
[includeIf "gitdir:/Users/liqilong/eryajf/github-eryajf/"]
path = ~/.gitconfig_github_eryajf
1
2
3
4
5
6
2
3
4
5
6
然后再定义两个 path 对应的配置文件:
$ cat ~/.gitconfig_gitlab_lql95
[user]
name = lql95
email = eryajf@gmail.com
[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
[core]
sshCommand = "ssh -i ~/.ssh/github-liql"
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
另外一个:
$ cat .gitconfig_github_eryajf
[user]
name = eryajf
email = Linuxlql@163.com
[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
[core]
sshCommand = "ssh -i ~/.ssh/github-eryajf"
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
就是通过添加 sshCommand
实现不同配置中采用不同的秘钥,实测这种方案是最优雅好用的!
上次更新: 2024/11/19, 23:11:42