我有 1 个 github 用户和另一个 gitlab 用户,我为每个用户创建了 1 个 gpg 密钥,因为我的电子邮件地址不同。
问题是git config --global user.signingkey
每次我想提交不同的 git repos 时都必须执行。
有没有办法可以管理每个 git 用户的 gpg 密钥?
我有 1 个 github 用户和另一个 gitlab 用户,我为每个用户创建了 1 个 gpg 密钥,因为我的电子邮件地址不同。
问题是git config --global user.signingkey
每次我想提交不同的 git repos 时都必须执行。
有没有办法可以管理每个 git 用户的 gpg 密钥?
我有同样的情况,但工作/个人账户分开。而且我有很多存储库,但我不想git config
每次克隆新东西时都运行。
我写了一篇关于它的博客文章。一种自动执行此操作的方法是使用includeIf
git 提供的指令。您可以从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
然后在您的主~/.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 密钥。
可以为每个存储库设置签名密钥,只需执行:git config user.signingkey
从签出的存储库中。此命令设置存储库中的配置.git/config
。这些--global
选项会导致配置被写入~/.gitconfig
其中,它成为没有设置本地值的存储库的默认值。
更多信息可以git-config
在 user.signingKey 部分的手册页中找到。
您还可以通过设置user.email
与存储库关联的电子邮件来获得更好的结果。
只需user.signingkey
从您的存储库和全局设置中删除所有设置。
git
将决定使用gpg
具有匹配标识的密钥来进行存储库中的user.email
设置。