想要获取更多⽂章可以访问我的博客 - 。
在⽇常的开发过程中,我们⼀个功能可能会有很多次提交。⽽且我们公司的开发是不允许直接往公司仓库提交代码,所以需要fork到⾃⼰的仓库然后merge过去,这样就会导致拉代码会产⽣很多的commit,⽽这些commit其实是没有什么实际意义的。提交记录过多会导致代码review⾮常困难,那么今天我们就来介绍⼀个⾮常实⽤的命令 - git rebase,它可以将若⼲次提交合并成⼀个提交,下⾯我们就⼀起来见证⼀下这个骚操作吧。 准备
⾸先我们需要准备⼀个前提环境:
1.初始化⼀个git仓库。
mkdir git-test
cd git-test
git init
2.创建⼀个README.md⽂件。
口环
3.创建若⼲个提交(>1)。
我们执⾏git log命令会得到如下结果,⼀共有三次提交记录,我们将通过git rebase命令将后两个提交合并成⼀个commit:
$ git log
commit 8d27ccf975e5ce4af8fd12fa75534b78fdc5b065 (HEAD -> master)
Author: 码⽆⽌境 <gancy.programmer@gmail>
Date: Sun Jun 16 18:00:57 2019 +0800
第三次提交
commit c953ae97af01e49d7f0ad959b42b91334a6726f3
Author: 码⽆⽌境 <gancy.programmer@gmail>
Date: Sun Jun 16 18:00:30 2019 +0800
第⼆次提交
commit 53407186cedef4be98d6001a69ee33d3a8d745fc
Author: 码⽆⽌境 <gancy.programmer@gmail>
Date: Sun Jun 16 18:00:06 2019 +0800
第⼀次提交
合并提交记录
1.⾸先我们执⾏git rebase -i HEAD~3,这⾥的HEAD~2代表的合并最近两次提交,命令执⾏后会进⼊到⼀个vi编辑页⾯,如下所⽰:
pstl2.编辑之后的内容为:
p c953ae9 第⼆次提交
s 8d27ccf 第三次提交
3.编辑好后,保存(:wq)
4.然后会进⼊到⼀个编辑提交信息的界⾯(vi编辑),我写的”合并提交”,我们看最后合并提交的时间和第⼆次提交的时间⼀直,代表上⾯的合并是将第三次提交合并到了第⼆次提交。
5.保存消息后就执⾏成功了,我们再执⾏以下git log命令查看,会发现如下效果
$ git log
commit b1ab9f0af528aa96c333b2287c85d06e9fea891b (HEAD -> master)真空垫
Author: 码⽆⽌境 <gancy.programmer@gmail>
Date: Sun Jun 16 18:00:30 2019 +0800
合并提交
第⼆次提交
第三次提交
commit 53407186cedef4be98d6001a69ee33d3a8d745fc
塑料机器人Author: 码⽆⽌境 <gancy.programmer@gmail>
Date: Sun Jun 16 18:00:06 2019 +0800
第⼀次提交
合并时的⼏个命令介绍
pick:正常选中
reword:选中,并且修改提交信息;
edit:选中,rebase时会暂停,允许你修改这个commit清扫工具
squash:选中,会将当前commit与上⼀个commit合并
拖鞋生产设备
fixup:与squash相同,但不会保存当前commit的提交信息
exec:执⾏其他shell命令