git 对之前的commit 进行重新签名 Resign

本文介绍了在向开源社区提交代码时如何处理DCO(Developer Certificate of Origin)检查失败的问题。DCO确保贡献者有权提交代码并遵守开源协议。如果忘记在提交时添加签名,可以通过`git rebase --amend`或`git rebase --exec`来补签。文章详细讲解了这两种方法的使用步骤,帮助开发者解决签名遗漏问题,确保所有提交都符合社区要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在向开源社区提交PR的时候如果之前的提交忘记添加sign (个人签名/公司签名),则社区的DCO检查会失败。
关于通过DCO检查能够确保以下几件事情生效:

  1. 你所提交的贡献是由你自己完成或者 你参与了其中,并且有权利按照开源协议提交代码
  2. 这个贡献是在当前项目的基础上完成的。
  3. 你能够理解并遵守开源协议,你的贡献将会被完全公开。

这个检查对于社区来说能够防止后面你想要回退你的commit。

基本的签名方式就是在你git commit -m的时候增加一个git commit -s -m "xxx",这样你提交的commit 内容就包含了你的签名信息

    fix the review code
    
    Signed-off-by: BaronStack <2689496754@qq.com>

很多时候如果我们没有配置自己的commit 缩写的话就会忘记-s选项,这个时候需要对之前的commit 进行resign

大体对应两种情况:

  1. resign 上一次的commit
  2. resign 之前的很多次commit

针对第一种情况,很简单:
git rebase --amend ,直接在上一次的commit内容中增加你的签名信息即可。

第二个情况可以执行下面的内容

git rebase --exec 'git commit --amend --no-edit -n -S' -i 46809e5902

大体逻辑就是针对到-i之前的commit为止(包括-i)所有的commit 都会执行一次git commit --amend --no-edit -n -S来签名
在这里插入图片描述

会进入编辑器,直接保存退出就可以,然后不断得执行git rebase --continue,如果过程中有哪一个commit rebase失败的话需要根据提示解决冲突。如果执行过程中又不想rebase了,直接git rebase --abort即可,会将本次rebase触发的所有的变更都回滚掉。
执行完成之后就能git log看到所有的commit内容都带有你的签名信息了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值