世上没有后悔药,但是 git 有。是人总会犯错。“啪”,一个托马罗斯夫完美黄金螺旋的角度敲下回车之后,一拍脑袋,结果发现 commit 信息写错了。该怎么办呢?喝口浓茶压压惊,下面就看看 git 给我们的“后悔药”。

针对上一次提交

对于上一次的提交,我们可以通过这样简单修改:

git commit --amend --no-edit -m "new message" --date "Mon Mar 2 20:25:42 2020 +0800"

添加 --no-edit 参数之后,将不会使用 vi 去编辑 commit message 了,而是直接保存成功。

--date 参数可以让你修改提交的时间。该参数的值是遵循 RFC 5322 标准文档的。你可以使用 date -R 来打印出当前的时间,然后根据需要进行修改。

针对历史提交

当局者迷,旁观者清。当我们把代码提交上去,发现昨天写的 commit message 不美观,我想修改,怎么办呢?

首先,执行 git rebase -i <ref>,这里的 ref 是要修改提交的父级 commit 的引用。

执行之后,进入vi 编辑模式,把需要修改的 commit 前的 pick 修改成 e 或者 edit,然后保存

此时,依然使用上面的指令进行修改 commit message 和 date。git commit --amend --no-edit -m "new message" --date "Mon Mar 2 20:25:42 2020 +0800"

修改完成,执行 git rebase --continue 继续,直到修改结束。