赞
踩
一、背景
使用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)");
- }
- }
②使用命令:
此时进入vim编辑器,如左图所示;输入"i"进行修改,"esc"键退出修改,修改完输入":wq"进行保存,如右图所示:
此时可以使用git log查看修改:
2.2.中间的提交B存在问题
①使用git rebase -i HEAD~n或者git rebase -i 7位的head头^
进入左图的vim编辑器,输入"i"进行修改,将要修改的commit记录的pick修改成"e"或者"edit","esc"键退出修改,":wq"保存修改,如右图:
②修改问题代码
- public class Test {
- public void test(){
- System.out.println("A");
- System.out.println("B(修复B的Bug)");
- }
- }
③使用命令
此时进入了vim编辑器,输入"i"进行修改,"esc"键退出修改,修改完输入":wq"进行保存,如下图所示。
④git rebase --continue
此时如果有冲突, 需要先解决冲突:
git add .
git rebase --continue
此时进入左图的vim编辑器,直接输入":wq"即可,如右图:
此时显示成功变基并更新如左图示,代码更新如右图示:
此时使用git log查看历史记录如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。