git rebase实操:合并多个commit

762 阅读1分钟

git commit 规范提交信息,请阅读 Commit message 和 Change log 编写指南

背景:commit 提交历史

  • 当前分支为:test-rebase 的log日志记录有4次提交,其中第2次和第3次是同一个功能开发,故可以合并

image.png

使用 git rebase 命令,采用交互式方式操作 commit

  • 命令:git rebase -i 466d4e9de63 440bc5a5ea

    • git 命令介绍: git rebase -i (startCommitId endCommitId]

      • -i 全称为:--interactive,即弹出交互式的界面允许用户操作 commit
      • startCommitIdcommit 合并的起始 (不包含此 commit
      • endCommitIdcommit 合并的终点(包含此 commit
    • 弹出的交互式界面:

    image.png

    • commit 常用操作命令介绍:

      • p: pick,保留该 commit <常用>
      • r: reword,保留该 commit,但修改 commit 信息 <常用>
      • s: squash,将该 commit 和 前面一个 commit 合并/糅合
      • f: fixup,和 squash 模式相似,但是不保留该提交的注释信息
    • 根据需要,将 commit 前的命令更改为对应的操作

    image.png

自动生成游离分支

  • 执行完 rebase 命令,会自动生成一个 游离分支

image.png

基于游离分支,创建一个 本地临时性 分支

  • 执行命令 git checkout -b temp

image.png

在原来的分支,执行 rebase 命令

  • 切回原来的分支

image.png

  • 执行命令: git rebase temp

image.png

  • 此时会一步一步执行 patch 提交

    • 如果没有产生冲突,则合并完成,删除 temp 分支即可
    • 如果产生冲突,则需要处理冲突

处理 rebase 冲突

  • 处理完毕冲突,如果有文件,则需要使用 git add 命令添加,接着执行 git rebase --continue 命令,继续执行 patch 提交,此处 循环处理

image.png

  • 使用 git rebase --skip 跳过 commit

image.png


帮助

终止 rebase

  • 执行命令: git rebase --abort