我有一个github用户和另一个gitlab用户,我为每个用户创建了一个gpg密钥,因为我的电子邮件地址不同。问题是每次我想提交到不同的git仓库时都必须执行git config --global user.signingkey。有没有一种方法可以管理每个git用户的gpg密钥?
git config --global user.signingkey
fumotvh31#
我有同样的情况,但与分裂的工作/个人帐户。我有很多存储库,但我不想每次克隆新东西时都运行git config。我写了a blog post。自动完成此操作的一种方法是使用git提供的includeIf指令。你可以在git手册的Conditional Include部分阅读更多。有一个小要求,你需要能够通过路径中的组件区分github仓库和GitLab仓库(例如,将GitHub克隆放在~/github中,将Gitlab克隆放在~/gitlab中)然后,基本上,将签名密钥配置拆分为两个文件:
git config
includeIf
~/github
~/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匹配和包含不同的文件:
~/.config/git/config
includeIf gitdir:
# 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密钥。
slmsl1lt2#
只需从您的存储库和全局设置中删除所有user.signingkey设置。git将决定使用gpg中的一个键,该键具有来自您的存储库的user.email设置的匹配标识。
user.signingkey
git
gpg
user.email
m2xkgtsf3#
signingkey可以按仓库设置,只需执行:git config user.signingkey从已 checkout 的存储库中。此命令设置存储库的.git/config中的配置。--global选项会导致配置被写入~/.gitconfig,在那里它成为没有设置本地值的存储库的默认值。可以在git-config的手册页中的user.signingKey部分找到更多信息。您还可以通过将user.email设置为与存储库关联的电子邮件来获得更好的结果。
git config user.signingkey
.git/config
--global
~/.gitconfig
git-config
3条答案
按热度按时间fumotvh31#
我有同样的情况,但与分裂的工作/个人帐户。我有很多存储库,但我不想每次克隆新东西时都运行
git config
。我写了a blog post。自动完成此操作的一种方法是使用git提供的
includeIf
指令。你可以在git手册的Conditional Include部分阅读更多。有一个小要求,你需要能够通过路径中的组件区分github仓库和GitLab仓库(例如,将GitHub克隆放在
~/github
中,将Gitlab克隆放在~/gitlab
中)然后,基本上,将签名密钥配置拆分为两个文件:
然后在您的主
~/.config/git/config
配置文件中,使用includeIf gitdir:
指令根据您的WD匹配和包含不同的文件:然后,
~/github
文件夹中的所有repos将自动使用您的GitHub密钥,~/gitlab
文件夹中的repos将使用您的GitLab密钥。slmsl1lt2#
只需从您的存储库和全局设置中删除所有
user.signingkey
设置。git
将决定使用gpg
中的一个键,该键具有来自您的存储库的user.email
设置的匹配标识。m2xkgtsf3#
signingkey可以按仓库设置,只需执行:
git config user.signingkey
从已 checkout 的存储库中。此命令设置存储库的.git/config
中的配置。--global
选项会导致配置被写入~/.gitconfig
,在那里它成为没有设置本地值的存储库的默认值。可以在
git-config
的手册页中的user.signingKey部分找到更多信息。您还可以通过将
user.email
设置为与存储库关联的电子邮件来获得更好的结果。