在向开源社区提交PR的时候如果之前的提交忘记添加sign (个人签名/公司签名),则社区的DCO检查会失败。
关于通过DCO检查能够确保以下几件事情生效:
- 你所提交的贡献是由你自己完成或者 你参与了其中,并且有权利按照开源协议提交代码
- 这个贡献是在当前项目的基础上完成的。
- 你能够理解并遵守开源协议,你的贡献将会被完全公开。
这个检查对于社区来说能够防止后面你想要回退你的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
大体对应两种情况:
- resign 上一次的commit
- 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内容都带有你的签名信息了。