我非常喜欢Micah Henning在其文章中(参见设置Git身份信息)的方法。他强制每个创建/克隆的存储库都应用并强制使用身份信息,这是一种不会忘记每次进行此设置的好方法。
基本的git配置
取消当前用户在git中的配置:
$ git config --global --unset user.name
$ git config --global --unset user.email
$ git config --global --unset user.signingkey
强制在每个新的本地代码库中配置身份标识:
$ git config --global user.useConfigOnly true
为 identity
命令创建 Git 别名,稍后我们会用到:
$ git config --global alias.identity '! git config user.name "$(git config user.$1.name)"; git config user.email "$(git config user.$1.email)"; git config user.signingkey "$(git config user.$1.signingkey)"; :'
身份创建
使用 GPG 创建一个身份(根据系统上的情况使用 gpg
或 gpg2
)。对于每个要使用的身份,请重复以下步骤。
Note: [keyid]
here is the identifier of created secret key.
Example here:
sec rsa4096/8A5C011E4CE081A5 2020-06-09 [SC] [expires: 2021-06-09]
CCC470AE787C057557F421488C4C951E4CE081A5
uid [ultimate] Your Name <youremail@domain>
ssb rsa4096/1EA965889861C1C0 2020-06-09 [E] [expires: 2021-06-09]
The 8A5C011E4CE081A5
part after sec rsa4096/
is the identifier of key.
$ gpg --full-gen-key
$ gpg --list-secret-keys --keyid-format LONG <youremail@domain>
$ gpg --armor --export [keyid]
复制公钥并将其作为GPG密钥添加到您的GitHub/GitProviderOfChoice设置中。
向Git配置中添加身份信息。对于每个需要添加的身份,也要重复这个步骤:
注意:在这里我使用gitlab
来作为我的身份名称,但是根据您的问题它可以是任何东西,例如:gitolite
或github
、work
等。
$ git config --global user.gitlab.name "Your Name"
$ git config --global user.gitlab.email "youremail@domain"
$ git config --global user.gitlab.signingkey [keyid]
为仓库设置身份
如果一个新的仓库没有关联的身份信息,提交时会出现错误提示,提醒您进行身份设置。
*** Please tell me who you are.
## parts of message skipped ##
fatal: no email was given and auto-detection is disabled
请指定您希望在新存储库上使用的身份标识:
$ git identity gitlab
现在,您已经可以使用 gitlab 身份进行提交了。