对 git 提交进行签名 [[Linux]]
verified
当我们通过 github 网页创建一个 commit 时往往可以看到提交记录旁边有一个 Verified 。这在通过客户端 commit 并且 push 时是没有的
这个签名是用于确认该提交真实属于帐号提交者。因为任何人都可以在客户端通过 设置 user.nameuser.email 假冒
为此我们需要在本地设置一个 [[gpg]] 密钥,提交到 github 帐号,然后在签名时使用该密钥证明提交所有者的真实性
# 首先使用 gpg2 生成 gpg 密钥
gpg2 --full-gen-key --expert
# 选择 10 ECC (sign only) “只用于签名”
# 选择 1 Curve 25519
# 选择任意有效期
# 然后终端会输出密钥的 fingerprint
# 使用 fingerprint 执行下列命令获取密钥内容
gpg --armor --export <fingerprint>
# 将密钥内容粘贴至 github 的 account > settings > GPG keys > add new key.
# 获取你的 keyid
gpg2 --list-secret-keys --keyid-format LONG
# keyid 是上面的输出里的 sec 的后半部分
# 例如输出是 sec 4096R/234FAA343232333
# 那么 keyid 就是 234FAA343232333
# 接着将用户签名设置为该 keyid
git config --global user.signingkey 234FAA343232333
# 接着设置提交时自动签名
git config --global commit.gpgsign true
git config --global gpg.program gpg2
# (可选项)设置提交文字模板,添加签名信息
# 将这里的姓名和邮箱替换成你自己的
printf "\nSigned-off-by: Hanchin Hsieh <[email protected]>\n" > ~/.gitmessage.txt
# 然后设置使用该模板进行提交
git config --global commit.template ~/.gitmessage.txt