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

jhkqcmku  于 2023-05-21  发布在  Git
关注(0)|答案(3)|浏览(197)

我有一个github用户和另一个gitlab用户,我为每个用户创建了一个gpg密钥,因为我的电子邮件地址不同。
问题是每次我想提交到不同的git仓库时都必须执行git config --global user.signingkey
有没有一种方法可以管理每个git用户的gpg密钥?

fumotvh3

fumotvh31#

我有同样的情况,但与分裂的工作/个人帐户。我有很多存储库,但我不想每次克隆新东西时都运行git config
我写了a blog post。自动完成此操作的一种方法是使用git提供的includeIf指令。你可以在git手册的Conditional Include部分阅读更多。
有一个小要求,你需要能够通过路径中的组件区分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

然后在您的主~/.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文件夹中的所有repos将自动使用您的GitHub密钥,~/gitlab文件夹中的repos将使用您的GitLab密钥。

slmsl1lt

slmsl1lt2#

只需从您的存储库和全局设置中删除所有user.signingkey设置。
git将决定使用gpg中的一个键,该键具有来自您的存储库的user.email设置的匹配标识。

m2xkgtsf

m2xkgtsf3#

signingkey可以按仓库设置,只需执行:git config user.signingkey从已 checkout 的存储库中。此命令设置存储库的.git/config中的配置。--global选项会导致配置被写入~/.gitconfig,在那里它成为没有设置本地值的存储库的默认值。
可以在git-config的手册页中的user.signingKey部分找到更多信息。
您还可以通过将user.email设置为与存储库关联的电子邮件来获得更好的结果。

相关问题