管理 2 个 git 用户 gpg 密钥并为每个用户选择 gpg 签名

sli*_*015 7 git gpg-signature

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

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

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

cha*_*rit 12

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

我写了一篇关于它的博客文章。一种自动执行此操作的方法是使用includeIfgit 提供的指令。你可以从git 手册的条件包含部分阅读更多关于它的信息。


有一个小要求,您需要能够通过路径中的组件将 github 存储库与 gitlab 存储库区分开来(例如,将 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
Run Code Online (Sandbox Code Playgroud)

然后在您的主~/.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
Run Code Online (Sandbox Code Playgroud)

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


小智 5

签名密钥可以针对每个存储库进行设置,只需git config user.signingkey从已签出的存储库中执行即可。此命令设置存储库中的配置.git/config。这些--global选项会导致配置被写入到~/.gitconfig没有设置本地值的存储库的默认配置中。

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

您还可以通过设置user.email与存储库关联的电子邮件来获得更好的结果。


小智 5

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

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