【git命令】git rebase合并多次commit操作
git rebase合并多次commit操作
想要合并n条提交记录,有两个方法:
1. 从HEAD版本开始往过去数 n
个版本
git rebase -i HEAD~n
2. 指定一个合并区间 startpoint
和 endpoint
,注意:该区间指定的是一个前开后闭的区间,意思就是startpoint不参与合并:
git rebase -i [startpoint] [endpoint]
- -i 的意思是
--interactive
,即弹出交互式的界面让用户编辑完成合并操作 - startpoint 和 endpoint 指定了一个编辑区间
- 如果不指定endpoint,则该区间的终点endpoint默认是当前分支HEAD所指向的提交
操作
1. 执行 git log
查看提交历史,接下来我们将三次提交合并为一个提交
2. 执行 git rebase -i HEAD~3
,弹出操作窗口
操作说明:
pick
:保留该commit(缩写:p)reword
:保留该commit,但我需要修改该commit
的注释(缩写:r)edit
:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)squash
:将该commit和前一个commit合并(缩写:s)fixup
:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)exec
:执行shell命令(缩写:x)drop
:我要丢弃该commit(缩写:d)
根据我们的需求,我们将commit内容编辑如下:
pick 85697ee This is first commit.
squash ee461c1 This is second commit.
squash 326e415 This is third commit.
上面的意思就是把第二次、第三次提交都合并到第一次提交上。
3.然后保存退出,Git会压缩提交历史。如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了
修改以后要记得敲下面的命令:
git add .
git rebase --continue
如果你想放弃这次压缩的话,执行以下命令:
git rebase --abort
4.如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:
我们将三次提交信息合并成一个提交信息
Commit feature branch!
#This is first commit.
#This is second commit.
#This is third commit.
5.编辑完保存即可完成commit的合并了,我们执行一下 git log