在rebase时,会进行一系列的commit操作(封装好的),对用户是透明的看不到,会将基点之前的commit GPG签名全部删除,因为它本质是一系列的commit操作(我猜测的),所以我们可以利用这个特性自由地对commit添加/删除GPG签名(影响到基点之后的全部commit),接着在交互界面中将pick改成reword即可。
1、rebase参数说明
git rebase的签名参数,引用自:Git - git-rebase Documentation (git-scm.com)
-S[<keyid>]
--gpg-sign[=<keyid>]
--no-gpg-sign
GPG-sign commits. The
keyid
argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space.--no-gpg-sign
is useful to countermand bothcommit.gpgSign
configuration variable, and earlier--gpg-sign
.
2、样例
使用git log --show-signature
检查commit是否进行GPG签名。
1、添加gpg签名(基点之后的commit全部添加签名)
git rebase -S -i <commit id> #-S 与--gpg-sign 等价
接着将任意一个commit的pick改成reword保存后(这样才会触发rebase,并且不会对commit有其他改动),后面那个也不用动保存即可。
2、删除gpg签名(基点之后的commit全部删除签名)
git rebase --no-gpg-sign -i <commit id>
接着将任意一个commit的pick改成reword保存后(这样才会触发rebase,并且不会对commit有其他改动),后面那个也不用动保存即可。