前言

以前当我git提交信息出现错误的时候,如果是最近的一次提交,我会使用Sourcetree提交选项中的“更正上一次提交”(git --amend)来补充或修改;但如果不是最新的一次提交,事情可能就有点麻烦了,我可能会将错误提交之后的每一条提交都创建补丁,然后再重置(强行合并)到错误的提交,使用“更正上一次提交”修正后,再一条一条应用之前打好的补丁,这一套操作很繁琐,而且可能出现人为错误。
其实上面的一套操作git rebase都给我们提供了封装,简化操作,可以实现对历史提交记录的一些操作,可以实现以下操作:

  • 修改历史提交信息
  • 修改历史提交顺序
  • 合并历史提交
  • 删除历史提交
  • 修改历史提交内容,如插入提交,将一次提交划分为两次等

rebase变基分支的功能本文暂不涉及,这也是基础用法。
下面主要记录在Sourcetree中使用rebase 修改历史提交的方法


一、修改历史提交信息

目标:修改“first commit”为“first commit - changed”
  1. 右键需要修改提交的前一条提交,选择“交互式变基xxx的子提交...”,会出现以下页面


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图1
  2. 双击需要修改的提交的描述,或选中需要修改的提交后点击左下角“编辑信息”,重新编辑提交信息。(也可以同时编辑多个历史提交记录)


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图2
  3. 依次点击确认即可


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图3

二、修改历史提交顺序

目标:交换“first commit”和“second commit”的顺序
  1. 同上面第一步,出现如图1界面
  2. 鼠标拖动提交为更正的顺序即可
  3. 依次点击保存


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图4

三、合并历史提交

目标:合并“first commit” 和 “second commit”为一次提交
  1. 同上面第一步,出现如图1界面
  2. 鼠标拖动提交,使两个提交重叠,如下


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图5
  3. 可修改合并后的描述,点击确定即可


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图6

四、删除历史提交

目标:删除“merge first and second commit”提交
  1. 同上面第一步,出现如图1界面
  2. 选中需要删除的提交,点击下面删除按钮,点击确定即可

五、修改历史提交

目标:将“merge first and second commit”提交划分为两次提交

修改的操作相比前面要多一些。

  1. 同上面第一步,出现如图1界面

  2. 勾选需要修改的提交的“更正提交”选项


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图7
  3. 点击确认,出现分离的HEAD


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图8
  4. 右键HEAD的前一条提交,选择“重置到这次提交”,并进行混合合并


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图9
  5. 这样需要修改的提交的内容就存在于工作区中,重新分次提交


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图10
  6. 点击工具栏“动作”,选择“继续变基”


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图11
  7. 完成


     
    记录Sourcetree 基于git rebase修改git提交记录的方法
    图12

总结

git rebase 命令很强大,但也不能过度依赖。因为它会将修改的历史提交之后的提交一并重新提交,会导致不需要修改的提交的SHA和提交日期一并被修改,可能在某些场景并不适用。



作者:jason294
链接:https://www.jianshu.com/p/9e91ed38e74a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • 2021-10-23
  • 2021-11-02
  • 2022-01-22
  • 2022-12-23
  • 2021-07-18
  • 2021-11-25
  • 2021-12-05
猜你喜欢
  • 2021-10-02
  • 2021-10-22
  • 2022-12-23
  • 2021-10-31
  • 2022-03-06
相关资源
相似解决方案