Git 现在具有使用 签署提交的功能git commit -S
,这很好,但有时我会忘记将标志添加到commit
,有时我会将使用 申请的补丁邮寄给自己am
,而该命令没有用于签署的标志。
有没有办法为已记录的提交添加签名?
答案1
- 进入交互式变基模式。
在您要签名的每个提交后添加以下行
exec git commit --amend --no-edit -S
这将在选择每次提交后运行此命令。
更新:
更简单的方法是:
git rebase --exec 'git commit --amend --no-edit -n -S' -i development
这将重新设定开发之前的所有内容(或任何哈希),并且您不必在每次提交后复制粘贴。
答案2
签署提交会改变其内容,因此依赖于它的较新的提交将改变其哈希值。
如果您只想签署最近的提交,git commit -S --amend
那就可以了。
答案3
我使用git rebase -i --root
(参见改写历史) 并更改pick
为edit
。
然后我用git commit -S --amend --no-edit && git rebase --continue
(在 Windows 上)每次提交。
这是对每个提交手动签名。我希望我们能找到更好的解决方案。
答案4
如果您只想过滤特定的提交并仅对它们进行签名,则可以使用filter-branch
:
git filter-branch --commit-filter 'if [ "$GIT_COMMITTER_EMAIL" = "[email protected]" ];
then git commit-tree -S "$@";
else git commit-tree "$@";
fi' HEAD
如果由于某种原因您只想签署自己的提交,这将很有用。