在Git中合并多个提交,可以使用git rebase命令。
git rebase 的用法如下:
- git rebase -i HEAD~n 合并最近的n个提交,n为提交次数。进入交互模式,可以对要合并的提交进行变基。
- git rebase -i 合并直到某个提交ID的所有提交,进入交互模式。
- 在交互模式中,可以对要合并的提交进行如下操作:
- pick:保留该提交(默认操作)
- squash:合并该提交与上一个提交
- reword:合并该提交与上一个提交,但使用该提交的注释
- edit:在合并该提交前停下来,进行其他操作
- drop:丢弃该提交
- 合并完成后,可能需要解决冲突,然后git add、git rebase –continue继续。
例如:
合并最近3次提交:
$ git rebase -i HEAD~3
进入交互模式:
pick b2a6be7 add readme # 保留该提交
squash 4ca3e90 fix bug # 合并该提交与上一个提交
pick 7c26a4f modify code # 保留该提交
# 改为:
pick b2a6be7 add readme
s 4ca3e90 fix bug
pick 7c26a4f modify code
修改完成后保存退出,Git会打开编辑器来编辑合并后的提交信息:
# This is a combination of 2 commits.
# The first commit's message is:
add readme
# This is the 2nd commit message:
fix bug
# Please enter the commit message for your changes.
输入新的提交信息,保存退出,合并完成。
git rebase 用于变基,即重新定义一系列提交的上游和顺序。利用交互式rebase,可以方便地合并、重排、删除一系列的提交。