为什么需要使用GnuGPG来签名Git commit?,请查看:Git 工具 - 签署工作
安装GPG
-
macOS
brew使用以下命令 :1brew install gpg
使用GPG
-
使用以下生成密钥命令:1
1 2 3gpg --full-generate-key #git version 2.17.*以上使用这条命令 # git version 2.1.17 last use under command gpg --default-new-key-algo rsa4096 --gen-key根据提示一步一步的设置好信息,然后执行:
1 2 3 4#查看密钥信息ID gpg --list-secret-keys --keyid-format LONG #导出签名copy到Github个人设置界面->SSH and GPG keys中 gpg --armor --export <GPG PUB UID> -
上传密钥到公钥服务器2
1gpg --send-keys [用户ID] --keyserver hkp://subkeys.pgp.net -
导出公钥和私钥
1 2gpg --output mygpgkey_pub.gpg --armor --export <gpg pub id> gpg --output mygpgkey_sec.gpg --armor --export-secret-key <gpg pub id> -
导入密钥(公钥和私钥)
1 2 3gpg --import [密钥文件] gpg --import ~/mygpgkey_pub.gpg gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg -
删除密码:
1 2 3 4 5gpg --edit-key 375A500B # 在弹出的界面中输入原来密码,新密码留空即可 passwd # 保存修改 save
配置Git项目
-
设置使用的GPG签名3
1git config --global user.signingkey <GPG PUB UID> -
打开项目提交GPG签名
1git config --global commit.gpgsign true #所有项目打开,只针对当前项目打开则删除其中的--global -
使用签名提交:4
1 2 3git commit -S -m commit message #Tag签名 git tag -s -
对tag进行签名:5
git tag -s tagname
Note
Git commit的时,出现以下错误:
|
|
- 确认是否导入:
export GPG_TTY=$(tty)到~/.zshrc或~/.bash文件中; - 使用: git config –list 查看 user.signingkey and commit.gpgsign 是否重复设置或设置错误,如果重复设置使用: git config –unset 删除对应的参数
- 如果提示
Sorry, no terminal at all requested - can't get input的话,需要 把~/.gnupg/gpg.conf中的no-tty注释掉