【git命令】git rebase合并多次commit操作

git rebase合并多次commit操作

想要合并n条提交记录,有两个方法:

1. 从HEAD版本开始往过去数 n 个版本

git rebase -i HEAD~n

2. 指定一个合并区间 startpointendpoint,注意:该区间指定的是一个前开后闭的区间,意思就是startpoint不参与合并:

git rebase -i  [startpoint]  [endpoint]
  • -i 的意思是 --interactive,即弹出交互式的界面让用户编辑完成合并操作
  • startpointendpoint 指定了一个编辑区间
  • 如果不指定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

参考资料

1. 使用Git-Rebase合并多次提交

2. git 合并多次commit

3. git管理 - 合并commit

posted @ 2021-10-28 22:16  苏格拉底的落泪  阅读(3194)  评论(0编辑  收藏  举报