Skip to content

Latest commit

 

History

History
123 lines (91 loc) · 3.61 KB

如何在一台电脑上配置多个GitHub账号.md

File metadata and controls

123 lines (91 loc) · 3.61 KB

不同托管站

日常开发过程中,我们的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

注意路径结尾要以 /结尾,表示此目录下所有项目应用下边path指定的配置文件。

然后再定义两个path对应的配置文件:

$ cat ~/.gitconfig_gitlab
[user]
	name = 李启龙
	email = [email protected]
[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f

另外一个:

$ cat .gitconfig_github
[user]
	name = eryajf
	email = [email protected]
[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f

然后分别在两个目录中创建项目进行测试,发现推送的用户就变成对应定义的了。

相同托管站

上边举的例子是在不同代码托管站的多配置维护方案,还有一种情况是,如果我们在GitHub有多个账号,此时怎样维护才更加省心一些呢。

有的同学可能想到用户名和邮箱可以套上边的方式进行配置,的确可以,但是有一个问题绕不过去,那就是在GitHub中,同一个秘钥不能添加到不同用户账号中,鉴于这种情况,就必须要给不同账号配置不同的秘钥对了。

网上很多地方给的方案建议修改 ~/.ssh/config 来指定不同的秘钥,但交互的时候还需要手动修改一些内容,其实也麻烦,接下来这里介绍一种相对省心的方案。

假如我有两个GitHub账号:eryajf和lql95。

然后在本地电脑有两对秘钥:

$ cd ~/.ssh
$ ssh-keygen -f "github-liql"
$ ssh-keygen -f "github-eryajf"

把公钥添加到账号的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

然后再定义两个path对应的配置文件:

$ cat ~/.gitconfig_gitlab_lql95
[user]
	name = lql95
	email = [email protected]
[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"

另外一个:

$ cat .gitconfig_github_eryajf
[user]
	name = eryajf
	email = [email protected]
[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"

就是通过添加 sshCommand 实现不同配置中采用不同的秘钥,实测这种方案是最优雅好用的!