git修改提交信息与注释

0 前言

通过git log查看提交信息时,发现某次提交信息错了,需要修改,就需要以下操作。

1 准备

接下来的命令可能会破坏工作区的修改,请先git stash储存,修改完毕后,git stash pop恢复工作区。

2 修改最近一次注释

执行命令:

1
git commit --amend

直接修改就行,之后:wq即可,修改完成。

3 修改某次注释

3.1 方式1

首先通过git log --oneline找到要修改的地方:git提交历史

比如说,我想修改hash为4b93da4的提交信息,即修改“第二次”,这个提交,相对于当前提交,是倒数第三个的,执行命令:

1
2
3
4
5
# 这个3,指的就是倒数第三次
git rebase -i HEAD~3

# 也可以根据hash,指定要修改的hash的前一个
# git rebase -i **************

显示的结果如下:git修改提交历史

找到我们要修改的提交,就是4b93da4,把前面的pick修改为edit,之后:wq保存退出。
接下来命令:

1
2
3
4
5
6
7
8
# 参照2
git commit --amend

# 使用当前git的作者设置,重置这个commit的提交作者
# git commit --amend --reset-author

# 恢复到当前提交
git rebase --continue

其实这个原理我的理解就是先版本回退到你想修改的某次版本,然后修改当前的commit注释,然后再回到本地最新的版本。

3.2 方式2

严格来说,也不算是第二种方法。就是把上面的pick修改为reword,直接编辑信息就行,不用跳转。

3.3 扩展:合并commit

可以看到,除了pickrewordedit这三个命令,还有squashfixup这两个,作用都是把当前的提交合并到上一次的提交,不同的是前者合并两个提交信息,后者丢弃当前提交信息。

4 修改多个注释

和前面一样,可以用edit命令,也可以用reword命令,在多个需要修改的前面,都把pick修改即可。edit命令,都是重复以下代码:

1
2
3
4
5
# 修改一次
git commit --amend

# 恢复一次
git rebase --continue

每修改一个,都要重复一回,直到回到当前提交状态。
reword命令,每次:wq后,会自动提示到下一个,方便。

5 修改第一个注释

通过上述方法,发现无法回退到第一个注释,因为需要第一个当坐标,那么如何修改呢?

使用以下命令:

1
git rebase -i --root

之后,就和上面的一样。

6 整体参考

Change first commit of project with Git?
使用git合并两次commit
Git 修改已提交的commit注释

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2024 zhanglonglong
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信