Git 操作篇:合并多个commit 的高级技巧

3,967 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情 

前言

在我们的日常项目开发中,git commit -m 无疑是使用最频繁的指令,这也造成了大量的commit 在我们的分支上。这样常常会带来分支过长、版本过多的问题。

正文

想要解决这个问题,我们通常会对commit 进行合并。

当我们发现两个commit 或多个commit 存在很强的关联性、并且几个commit 加起来也可以成为一个完整的描述的时候,就可以对这些commit 进行合并。

我们先来看看传统的做法,使用git rebase -i 来将前几个commit 进行合并。

实操

先用git log 查看一下历史。

image.png

比如这里有4 条commit 记录,我们想把前两条合并。

我们应该复制第三条commit 的id(从上至下),然后使用命令git rebase -i id(44c29...)

这次就会进入编辑commit 界面

image.png

上方是选中的两次commit ,下方是各种操作的指令,按i 进行编辑模式。
这里我们需要将红色区域的第二个pick 改为 s,意为向上保存

image.png

按下 ESC 键退出编辑模式,按下 :wq 保存退出,我们的commit 就算合并好了,进入预览界面。此时再次保存退出就好了。

image.png

到这步就将两次commit 合并成功了!

但每次合并都去git log -> git rebase -i 有些太过繁琐,于是我们今天的主角就来了!

配置 .zshrc

打开终端,在根目录下打开 .zshrc 文件,可以使用vscode 打开

image.png

只需要在文件的空白处输入这行代码

alias gi='_gi() { git rebase -i "HEAD~$1" };_gi'

image.png

再使用终端输入 source .zshrc 使其生效。

image.png

这个时候我们就可以使用 gi 来代替git rebase -i ,使用数字 n 说明是前几个commit.

比如 gi 2 来合并前两次commit。

image.png

完结

看到这,如果觉得本文有帮助到您,希望能留下一个大大的赞👍,感谢~