我正在试图弄清楚如何手动签署/验证提交,但我无法弄清楚正在签署哪些数据来创建签名.换句话说,我想不出什么<data>在gpg --verify <commit-sig> <data>需求如此.
这是git源代码的相关部分:https://github.com/git/git/blob/master/commit.c#L1047-L1231但我也是C.的新手.
这是一些示例数据:
在一个新的git仓库中,我创建了一个文件ledger.txt并使用签名提交提交它:
git config --global user.signingkey 7E482429
git init
echo "EAC5-531F-38E8-9670-81AE-4E77-C7AA-5FC3-7E48-2429 1\n" > ledger.txt
git add ledger.txt
git commit -m "Initial commit" --gpg-sign=7E482429
Run Code Online (Sandbox Code Playgroud)
在这里它是在日志中:
git log --show-signature
commit 876793da21833b5b8197b08462523fd6aad3e5ba
gpg: Signature made Fri May 9 20:01:55 2014 CDT using RSA key ID 7E482429
gpg: Good signature from "Dan Neumann <danrodneu@gmail.com>"
Author: Dan Neumann <danrodneu@gmail.com>
Date: Fri May 9 20:01:55 2014 -0500
Initial commit
Run Code Online (Sandbox Code Playgroud)
这是漂亮的打印提交对象(它存在于.git/objects/87/6793da21833b5b8197b08462523fd6aad3e5ba …