当前位置:  开发笔记 > 运维 > 正文

有没有办法gpg签署所有以前的提交?

如何解决《有没有办法gpg签署所有以前的提交?》经验,为你挑选了3个好方法。

正如标题所说,我正在寻找一种方法来gpg签署我在存储库中的所有先前提交(最好不要在每次提交时输入我的密码).

谢谢!



1> Schwern..:

你可以,但它必须重写你的整个历史记录才能这样做.

对提交进行签名会更改提交,从而更改其提交ID.由于提交ID取决于先前的提交ID,因此必须更改之后的所有提交.而且无论如何你都要签名.

如果它是其他人没有工作的个人存储库,那么这不是问题.如果它是与其他协作者的存储库,则将其视为执行主要的rebase.

您可以git filter-branch使用该-S选项重做每次提交.

git filter-branch --commit-filter 'git commit-tree -S "$@";' -- --all

至于不必为每次提交输入密码,您需要配置gpg为使用gpg-agent.如果您熟悉ssh-agent它是一个类似的想法,那么您只需将密码提供一次并将其保存在内存中即可.如何操作取决于您的操作系统和设置.在OS XI上让GPG工具处理它.



2> Roberto Lein..:

如果您只想过滤特定提交并仅签名,则可以使用filter-branch:

git filter-branch --commit-filter 'if [ "$GIT_COMMITTER_EMAIL" = "user@domain.com" ];
  then git commit-tree -S "$@";
  else git commit-tree "$@";
  fi' HEAD

如果由于某种原因,您只想签署自己的提交,这将非常有用.



3> dhilt..:

我的方法是

git rebase --exec 'git commit --amend --no-edit -n -S' -i 8fd7b22
git push --force

从开始的所有提交8fd7b22都将重新签名,除了签名之外,没有其他更改。

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有