使用git commit修改历史提交记录_鹏爷哈哈哈的博客-爱代码爱编程
一、背景
使用git开发过程中,我们可能遇到提交多个commit的情况,如下图所示,但当做测试的时候察觉某次commit有bug,此时又不想新提一个commit来解决这个问题,这时候该怎么办?
public class Test {
public void test(){
System.out.println("A");
System.out.println("B");
System.out.println("C");
System.out.println("D");
}
}
提交记录:A->B(存在bug需要修改)->C->D(存在bug需要修改)
二、解决方式
git log 查看历史提交,可以看到A、B、C、D的提交记录
2.1.最近的一次提交D存在问题
①修改问题代码:
public class Test {
public void test(){
System.out.println("A");
System.out.println("B");
System.out.println("C");
System.out.println("D(修复D的Bug)");
}
}
②使用命令:
- git add .
- git commit --amend
此时进入vim编辑器,如左图所示;输入"i"进行修改,"esc"键退出修改,修改完输入":wq"进行保存,如右图所示:
此时可以使用git log查看修改:
2.2.中间的提交B存在问题
①使用git rebase -i HEAD~n或者git rebase -i 7位的head头^
- it rebase -i HEAD~3
进入左图的vim编辑器,输入"i"进行修改,将要修改的commit记录的pick修改成"e"或者"edit","esc"键退出修改,":wq"保存修改,如右图:
②修改问题代码
public class Test {
public void test(){
System.out.println("A");
System.out.println("B(修复B的Bug)");
}
}
③使用命令
- git add .
- git commit --amend
此时进入了vim编辑器,输入"i"进行修改,"esc"键退出修改,修改完输入":wq"进行保存,如下图所示。
④git rebase --continue
此时如果有冲突, 需要先解决冲突:
- 编辑冲突文件, 解决冲突
git add .
git rebase --continue
此时进入左图的vim编辑器,直接输入":wq"即可,如右图:
此时显示成功变基并更新如左图示,代码更新如右图示:
此时使用git log查看历史记录如下图所示: