管理 2 git 个用户 gpg 密钥并为每个用户选择 gpg 签名
manage 2 git users gpg key and choose gpg sign per user
我有 1 个 github 用户和另一个 gitlab 用户,我为每个用户创建了 1 个 gpg 密钥,因为我的电子邮件地址不同。
问题是每次我想提交不同的 git 回购时我都必须执行 git config --global user.signingkey
。
有什么方法可以管理每个 git 用户的 gpg 密钥?
签名密钥可以按存储库设置,只需在签出的存储库中执行:git config user.signingkey
。此命令设置存储库 .git/config
中的配置。 --global
选项导致配置被写入 ~/.gitconfig
,它成为没有本地值集的存储库的默认值。
更多信息可以在 git-config
手册页的 user.signingKey 部分找到。
您还可以通过将 user.email
设置为与存储库关联的电子邮件来获得更好的结果。
我遇到了同样的情况,但拆分了 work/personal 个帐户。我有很多存储库,但我不想 运行 git config
每次克隆新的东西时。
我在 git 手册中写了 a blog post about it. A way to do this automatically is to use the includeIf
directive provided by git. You can read more about it from the 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
文件夹中的所有回购将自动使用您的 git 集线器密钥,您 ~/gitlab
文件夹中的所有回购将使用您的 git 实验室密钥。
只需从您的存储库和全局设置中删除所有 user.signingkey
设置。
git
将决定使用 gpg
中的密钥,其身份与您的存储库中的 user.email
设置相匹配。
我有 1 个 github 用户和另一个 gitlab 用户,我为每个用户创建了 1 个 gpg 密钥,因为我的电子邮件地址不同。
问题是每次我想提交不同的 git 回购时我都必须执行 git config --global user.signingkey
。
有什么方法可以管理每个 git 用户的 gpg 密钥?
签名密钥可以按存储库设置,只需在签出的存储库中执行:git config user.signingkey
。此命令设置存储库 .git/config
中的配置。 --global
选项导致配置被写入 ~/.gitconfig
,它成为没有本地值集的存储库的默认值。
更多信息可以在 git-config
手册页的 user.signingKey 部分找到。
您还可以通过将 user.email
设置为与存储库关联的电子邮件来获得更好的结果。
我遇到了同样的情况,但拆分了 work/personal 个帐户。我有很多存储库,但我不想 运行 git config
每次克隆新的东西时。
我在 git 手册中写了 a blog post about it. A way to do this automatically is to use the includeIf
directive provided by git. You can read more about it from the 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
文件夹中的所有回购将自动使用您的 git 集线器密钥,您 ~/gitlab
文件夹中的所有回购将使用您的 git 实验室密钥。
只需从您的存储库和全局设置中删除所有 user.signingkey
设置。
git
将决定使用 gpg
中的密钥,其身份与您的存储库中的 user.email
设置相匹配。