使用 git rebase 合并多个 commit

这里有一个 Git 仓库,其最近三条提交都是在update test.md,现在想将其合并为一条:

img

git rebase可以实现,具体命令为:

git rebase -i <startpoint>

startpoint是一个 commit id,命令将处理(startpoint, HEAD]区间内的所有 commit,这个区间要包含想要合并的三条记录,所以startpoint159ab49d

img

键入:

git rebase -i 159ab49d

会出现如下内容:

img

i进入编辑模式,将后两个pick改为s

img

esc,然后按:wq写入并退出。之后会显示如下内容:

img

i进入编辑模式,将后两个update test.md信息删除:

img

esc,然后按:wq写入并退出。命令行输出Successfully rebased and updated refs/heads/main.之类的信息,说明成功了。

三个 commit 合并成了一个:

img

说明:

  1. 命令中-i的意思是--interactive,即弹出编辑界面让用户编辑完成 rebase 操作。
  2. pick表示保留 commit。
  3. ssquash的缩写,表示“压缩” commit,后两个 commit 标记为s,表示将后两个 commit 逐个“压缩”到前面的 commit(即第一个 commit)。
  4. 如果你用git push推送失败,可以试试git push -f强制(!)推送。
  5. 文中的 commit 曲线图由 VSCode 扩展 Git Graph 展示。

顺带一提,有时候会在 GitHub 看到这样的提交信息:

img

怎么做到的?

现在,在仓库中创建三个 Markdown 文件,并提交更改:

img

确定startpoint414396d7

img

键入:

git rebase -i 414396d7

编辑 commit:

img

编辑 commit 信息:

img

推送到 GitHub 后:

img

ref: 使用 git rebase 合并多次 commit

posted @   Higurashi-kagome  阅读(464)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示