Git rebase 笔记

Git 合并代码有 merge和 rebase 两种选择,个人观点是,merge 一般用来合并两个分支,而 rebase 一般用来合并 commit。

最近在给 mattermost 项目提交 PR 的时候被要求 rebase ,操作了几次都不成功,后来仔细看了文档才正确合并,所以又了以下记录。

如果有4次提交,hash分别是

1
2
3
4
commit1 ---> be8ad5c
commit2 ---> 57939ce
commit3 ---> 64be23a
commit4 ---> e0788e4

如果想把commit4合并到commit3,

1
2
3
4
5
git rebase -i 57939ce
pick 64be23a commit 3
pick e0788e4 commit 4

下方会有操作的注释

1
# s, squash = use commit, but meld into previous commit

对于想要合并的commit,使用s操作,

1
2
pick 64be23a commit 3
s e0788e4 commit 4

保存后,会进入交互编辑模式

1
2
3
4
5
6
7
8
# This is a combination of 2 commits.
# This is the 1st commit message:
commit 3
# This is the commit message #2:
commit 4

表示将要合并两个commit,可以修改或不修改commit内容,保存后,两次commit即合并成一个commit了。

这样,在 git 的提交历史里便没有了 commit 4 这次提交。

参考资料:

Git 分支 - 变基