我非常喜欢 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
为命令创建 Git 别名identity
,我们稍后会用到:
$ 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
取决于您在系统上获得的内容)。对您要使用的每个身份重复后续步骤。
注意:[keyid]
这里是创建的密钥的标识符。这里的例子:
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]
后面的8A5C011E4CE081A5
部分sec rsa4096/
是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]
为存储库设置身份
如果一个新的 repo 没有关联身份,提交时会出现错误,提醒您设置它。
*** Please tell me who you are.
## parts of message skipped ##
fatal: no email was given and auto-detection is disabled
在新存储库上指定您想要的身份:
$ git identity gitlab
您现在已准备好使用gitlab身份提交。