追溯签署Git修订(Retroactively sign git commits)

2019-07-04 01:46发布

混帐的最新版本(> = 1.7.9)签署支持个体GPG提交。

是否有可能追溯签署树中的所有提交?

Answer 1:

追溯签订树中的所有提交?

是:添加一个标签,你会签署 。
这实际上是最佳的选择 ,当涉及到签署提交:签署所有设置他们通过一个标签,而不是单独签约每一个。
请参阅“ 如何获得推进的信息中后收到钩? ”。


注(更新可能2017)是唯一的Git 2.13.x / 2.14(Q3 2017)将彻底解决这一签名过程,因为“ git cherry-pick ”和序机器的其它用途和处理不当尾部块,其最后一行是不完整线。
这已被固定,使得一个额外的注销等被完成现有不完整线之后加入。

见提交44dc738 (2017年4月26日)由乔纳森·谭( jhowtan ) 。
(通过合并JUNIOÇ滨野- gitster -在提交6ebfa10 ,2017年16月)

sequencer :添加页脚之前添加新行

当遇到一个提交消息中不换行结束之后,定序并不确定是否一个空行应该被添加之前完成线。
这将导致“ (cherry picked... ”并签字线有时会出现在同一行提交信息的最后一行

这种行为被引入提交967dfd4 (“:使用拖车的拖车布局序”,2016年11月29日)。 然而,承诺的复归不能完全解决这个问题:在这之前提交,符合标准的页脚被认为是不符合要求的由has_conforming_footer()如果没有终止换行符,结果不但符合和不符合要求的页脚是同等对待时,他们不应该。

解决这个问题,无论是对符合和不符合页脚,并在这两个do_pick_commit()append_signoff()总增加一个新行到提交消息,如果它不能在一个检查合格页脚之前结束



Answer 2:

从签名git commit--gpg-sign (又名-S )选项是用于生成用于标识所述提交SHA1哈希数据的一部分。 所以追溯签名提交需要改变的ID的所有提交到该做。

如果你真的想你也许可以做的东西git filter-branch ,但它会更好,只是签署新的提交。 由于所有祖先的提交ID会影响将由任何新签署承诺,这将仍然允许旧的提交GPG验证通过新的方式的数据,签字提交。



Answer 3:

你可以尝试从点创建一个新的分支,你要开始你的签名提交。 我最近做了,对我的机器上创建得不到我的私人密钥的分支:

# git checkout -b new-branch <last-signed-commit>
# git cherry-pick <first-unsigned-commit>
# git checkout unsigned-branch
# git rebase new-branch

这需要你自己的Git配置为自动登录你的提交,并有明显的不应该过多的合并提交,其他底垫会显得怪异。 如果有疑问,樱桃采摘您的提交; 各挑提交将被签署。



文章来源: Retroactively sign git commits