管理2个git用户gpg密钥,并为每个用户选择gpg登录

时间:2018-09-24 12:40:09

标签: git gpg-signature

我有1个github用户和另一个gitlab用户,并且我为每个用户创建了1个gpg密钥,因为我的电子邮件地址不同。

问题是我每次想提交到不同的git repos时都必须执行git config --global user.signingkey

有没有办法管理每个git用户的gpg密钥?

3 个答案:

答案 0 :(得分:3)

我也有同样的情况,但是工作/个人账户分开了。而且我有很多存储库,但是我不想每次克隆新东西时都运行git config

我已为此写过a blog post。自动执行此操作的一种方法是使用git提供的includeIf指令。您可以在git手册的Conditional Include部分中了解有关此内容的更多信息。


有一个很小的要求,即您需要能够通过路径中的组件来区分gitlab存储库中的github存储库(例如,将github克隆放在~/github中, ~/gitlab中的gitlab克隆

然后,基本上将签名密钥配置分为两个文件:

# config.github
[user]
  name       = Chakrit
  email      = github@example.com
  signingkey = DEADBEEF

# config.gitlab
[user]
  name       = Chakrit
  email      = gitlab@example.com
  signingkey = BADC0FFEE

然后在主~/.config/git/config配置文件中,使用includeIf gitdir:指令根据WD匹配并包含不同的文件:

# when working with github
[includeIf "gitdir:**/github/**/.git"]
  path = config.github

# when working with gitlab
[includeIf "gitdir:**/gitlab/**/.git"]
  path = config.gitlab

然后~/github文件夹中的所有存储库将自动使用github密钥,而~/gitlab文件夹中的所有存储库将使用gitlab密钥。

答案 1 :(得分:1)

只需从您的存储库和全局设置中删除所有 user.signingkey 设置。

git 将决定在gpg 中使用与您的存储库中的 user.email 设置匹配的身份的密钥。

答案 2 :(得分:0)

可以在每个存储库中设置签名密钥,只需在已检出的存储库中执行git config user.signingkey。此命令在存储库的.git/config中设置配置。 --global选项使配置写入~/.gitconfig,在此处它是未设置本地值的存储库的默认设置。

更多信息可以在git-config的手册页的user.signingKey部分中找到。

通过将user.email设置为与存储库关联的电子邮件,您也可能会获得更好的结果。