9.Git将多个commit整理成一个
2020-11-25 本文已影响0人
就是耍帅
1.将多个连续的commit整理成一个
a.如下图所示,我将合并圈中的两个
![](https://img.haomeiwen.com/i22963131/5d035f75aae18b03.png)
b.合并commit可以使用rebase命令. git rebase -i [startpoint] [endpoint]
其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。
我们如果需要修改某一个commit,那么就必须指定他的父级commit
使用指令:git rebase -i b6d4039cdb3e0
![](https://img.haomeiwen.com/i22963131/5db56c679d3a2274.png)
上面未被注释的部分列出的是我们本次rebase操作包含的所有提交,下面注释部分是git为我们提供的命令说明。每一个commitId 前面的pick表示指令类型,git 为我们提供了以下几个指令:
![](https://img.haomeiwen.com/i22963131/418adf754a8333c2.png)
c.这里选择基于最早的pick合并,将(pick e6175fb three)合并到最早的 (2177bda two update)中,
![](https://img.haomeiwen.com/i22963131/c149c0ac4437a802.png)
d.上面的保存退出之后,弹出下面的弹框,输入新的message,保存即可
![](https://img.haomeiwen.com/i22963131/a7873a7d2369cdfb.png)
e.最后查看git log
![](https://img.haomeiwen.com/i22963131/fa1445e8a8410096.png)
2.将间隔的几个commit整理成一个
a.如下图,我要将(4425c91da5c81 four)和 ( b6d4039cdb3e0 first) 进行合并
![](https://img.haomeiwen.com/i22963131/fa1445e8a8410096.png)
b.还是使用指令:git rebase -i b6d4039cdb3e0 ( 这里还是要指定他的父级commit,这里 ( b6d4039cdb3e0 first) 已经是最高级了,所以直接用的 ),出现如下图:
![](https://img.haomeiwen.com/i22963131/4a8c07002cb5c1a6.png)
这时我们需要将( b6d4039cdb3e0 first)手动写进去,并且将(4425c91da5c81 four) 移动到和( b6d4039cdb3e0 first)一起,如下图:
![](https://img.haomeiwen.com/i22963131/0cf998820fa195df.png)
保存退出之后,出现下图:
![](https://img.haomeiwen.com/i22963131/4e83db6138e67a07.png)
c.执行上面圈中的指令: git rebase --continue ,然后会弹出一个类似下面的弹框,进行修改保存即可
![](https://img.haomeiwen.com/i22963131/6f1feccfa9706369.png)