git基本操作五:对Commit修改历史记录

前面介绍的git rebase命令有一种强大的互动模式。接下来我们介绍怎么使用这种模式来改动过去的历史记录。查看当前的状态。
在这里插入图片描述
启用互动模式,使用git rebase指令,加入-i参数

git rebase -i 28a728a

这个指令会弹出一个Vim编辑器。
在这里插入图片描述
这个需要注意的是:
1、上面的顺序是与git log指令的结果是相反的
2、上面的picks是指保留这次Commit,不做改动。
把pick改成reword,表示要改动这两次的Commit信息。存档离开之后会出现一个Vim编码器画面。把内容改成add cat “kitty”
在这里插入图片描述
存档离开又会弹出另外一个个Vim编辑器界面
在这里插入图片描述
这是第二次的reword,把内容改成add cat sherly,存档离开之后,Git就会完成剩下的工作。
在这里插入图片描述
这样就把两次记录修改了。看起来只是改了信息,其实Rebase的时候,Commit对象不只是剪切、粘贴而已。因为要接前一个Commit,所以会重新计算并计算出一个新的Commit对象。
要想取消这次rebase

git reset --hard ORIG_HEAD 

接下来我们继续前进,试着尝试把多个Commit合并为一个Commit
在这里插入图片描述
每次只添加一个文件,太过繁琐了,我们把这几个合并,使用Rebase的互动模式。

git rebase -i d5de0a6

在这里插入图片描述
把pick改成squash
在这里插入图片描述
最后一行的e3b218c会和前一个Commit e76d989合并,也就是add dog1会和add dog2合并在一起。以此类推。然后在弹出Vim编辑器界面,修改为add all cats和add all dogs。最后效果如下
在这里插入图片描述
查看此时的Commit记录
在这里插入图片描述
我们也可也反过来操作,把一个Commit拆解成多个Commit。还是使用Rebase的互动模式。

git rebase -i d5de0a6

在这里插入图片描述
把要拆解的那个Commit的pick改成edit,我们把aee3c35的pick改成edit,在执行到aee3c35的时候这个Commit就会停下来。
在这里插入图片描述
查看当前的状态。
在这里插入图片描述
这时因为要把当前这个Commit拆解成两个Commit,所以要使用reset指令

git reset HEAD^

查看此时的状态
在这里插入图片描述
可以看到这两个文件都被拆解出来了,而且还处于未跟踪的状态。add然后commit
在这里插入图片描述
但现在还是处于Rebase状态。所以要让Rebase继续执行。

git rebase --continue 

在这里插入图片描述
查看此时的Commit记录
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值