使用 GPG 签署现有提交

cha*_*asr 5 git github

我正在寻找一种方法来复制git commit -S除了特定提交之外的内容,例如通过提供其 SHA。

是否可以?

Ser*_*nik 11

如果您想签署分支上的所有现有提交而不对其进行任何更改:

git rebase --exec 'git commit --amend --no-edit -n -S' -i origin/HEAD
Run Code Online (Sandbox Code Playgroud)

  • 我得到“致命:无效的上游'origin/HEAD'” (2认同)

bit*_*oiu 5

签署提交将更改提交元数据,从而更改底层 SHA1 提交 ID。您可能知道,对于 Git,这与尝试更改历史记录的内容具有相同的结果。

如果你只想重新签署你的最后一次提交,你可以运行:

git commit -S --amend

如果你想在你的历史中间重新签署一个提交,你可以做几件事,如果你问我,所有这些都有些讨厌:

  1. 您可以reset --soft签署您要签署的提交。运行git commit -S --amend并提交所有暂存的更改。这会将提交之后的所有历史记录合并为一个提交
  2. 分支(为了安全)和reset --hard您要签名的提交。签名,如果你想保留提交历史,你现在git cherry-pick NEXTCOMMIT -S可以重新构建整个签名历史。