如何给历史的 git commit 添加签名并保留修改时间

问题描述: 一般对于 git commit 历史进行逐一修改时都会使用如下语句

git rebase -i HEAD~n

其中 n 需要替换为数字,表示想要修改的 commit 数量,但是这样做往往导致之前给 commit 添加的签名丢失,同时 commit 修改的时间也会改成最后一次提交的时间。

修改历史commit后不出现签名


解决方案: 如果想要给 commit 添加签名并且保证 commit 时间不变,可以使用如下语句

git rebase --exec 'GIT_COMMITTER_DATE="$(git log -1 --format=%at)" git commit --amend --no-edit -n -S' -i HEAD~n

简单解释一下就是,--exec会针对到 -i 之前的每个 commit 执行一次 GIT_COMMITTER_DATE="$(git log -1 --format=%at)" git commit --amend --no-edit -n -S 语句,该语句对每个 commit 进行签名并且修改 commit date 为 author date 时间。运行上述语句后,会进入编辑器。

执行语句后弹出编辑器界面
直接保存退出编辑器即可,随后推送修改的 commit 结果

git push -f

再次返回到 github 界面,可以发现签名和时间都恢复正常。

commit 历史恢复正常


参考链接:
[1] git 对之前的commit 进行重新签名 Resign
[2] git 修复提交日期
[3] git rebase 修改历史提交信息

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值