git使用新的GPG密钥重新签名commit
当你的GPG密钥发生了泄露或强迫症等其他情况,重新生成GPG密钥后,需要将原有的签名替换为新的签名,利用git filter-branch
命令可以一键完成此操作,此操作建议仅在私人仓库使用。
使用git rebase
命令,可以重新回到某些时刻,此时执行git commit -S --amend
可以达到重新签名的目的,但此操作相当于重新生成一个新的commit,而使用git filter-branch
命令,虽然也改变了"commit id",但是可以视为与原来的commit相同。
简单版本,为所有commit重新签名:
1 |
git filter-branch --commit-filter 'git commit-tree -S "$@";' -- --all |
进阶版本:重新签名指定commit之后的所有commit,将FIXME
替换为指定commit id:
1 |
git filter-branch --commit-filter 'git commit-tree -S "$@";' FIXME..head |
终极版本:签名所有commit但排除某些指定commit,先将需要排除的commit id写入一个临时文件,这里以~/list
为例:
1 |
git filter-branch --commit-filter ' |