在不改变提交时间的前提下修改一条 commit 的 message

前景提要

某天晚上提交完代码之后发现 Jun 29 的那条提交里把 change 拼写成了 changed。

作为一个强迫症是肯定要改过来的啦(

第一次尝试

作为一个在投实习前特地做完了 learngitbranching 的人,这点 git 操作肯定难不倒我啦。

直接 git rebase -i HEAD~5 ,把 changed some options in tsconfig 前面的 pick 改成 reword ,然后可以把 message 改回来了。

一通操作完后执行一下 git log 看看,时间(author date)都没问题,可以直接 force push 提交到 GitHub 上了。

结果去 GitHub 上一看发现,这五条的 commit 都变成了 commits on Jul 9, 2022 ,这可不对啊!

一个正确的操作方式

去网上查了一通资料发现,git 有 author date 和 commit date 两个时间。rebase 会把影响到的 commit 重新提交一次,但不影响 author date,所以我通过 git log 看到的时间没有变化。

要想不改变提交时间,就得在重新提交时把 commit date 改成原来的时间,只要设置 GIT_COMMITTER_DATE 就好了。

GIT_COMMITTER_DATE="2022-06-29T21:12:32" git commit --amend --date="2022-06-29T21:12:32"

鉴于这里我只用操作五条 commit,所以直接一条一条重复做类似的操作就好了。如果批量改可以考虑用 git filter-branch


在不改变提交时间的前提下修改一条 commit 的 message
https://littlejianch.github.io/reword-a-github-commit-message-without-changing-commit-date/
Author
LittleJian
Posted on
July 11, 2022
Licensed under