Git 合并代码有 merge和 rebase 两种选择,个人观点是,merge 一般用来合并两个分支,而 rebase 一般用来合并 commit。
最近在给 mattermost 项目提交 PR 的时候被要求 rebase ,操作了几次都不成功,后来仔细看了文档才正确合并,所以又了以下记录。
如果有4次提交,hash分别是
commit1 ---> be8ad5c
commit2 ---> 57939ce
commit3 ---> 64be23a
commit4 ---> e0788e4
如果想把commit4合并到commit3,
git rebase -i 57939ce
pick 64be23a commit 3
pick e0788e4 commit 4
下方会有操作的注释
# s, squash = use commit, but meld into previous commit
对于想要合并的commit,使用s操作, 即
pick 64be23a commit 3
s e0788e4 commit 4
保存后,会进入交互编辑模式
# 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 这次提交。