git rebase的使用
一,用于合并当前分支的多个commit记录
应用场景,如下第2-4次提交是对同一功能的代码提交记录,完全可以合并成一次提交记录。这个时候rebase就很有用了。
找到想要合并的commit, 使用rebase -i
git rebase -i bd0d758(第一次提交的commitId)
注意 git rebase -i [startPonit] [endPoint]
前开后闭 区间 这里的 [startPonit] 是指需要合并的commit的前一个commit (即当前示例中的 “bd0d758: 第一次提交”)。 因为, 三个commit肯定要基于上一个commit合并成了新的commit。 谨慎使用[endPoint] 省略, 即默认表示从起始commit一直到最后一个,但是一旦你填写了, 则表示 [endPoint]后面的commit全部不要了!
2,进入Interact交互界面
说明
- 最上面三行, 就是刚刚选中的三个commit, 按时间顺序依次往下排序(和git log的展示顺序是反的, 大家查看的时候要注意)
- 前面的三个Pick 其实就是下面 Commands展示的7种命令中的第一个p, 也就是使用commit。
3,使用s命令 合并到上一个commit
4.修改commit记录
再此执行git log 可以发现234此提交合并为一个了
二、使用rebase替代merge合并分支
2.1 使用merge合并分支代码
注意:当只有dev分支有提交,master分支没有任何提交,dev分支merge到master分支上,依旧是保持一条直线,也没有多余的提交。
给master新增两个提交,dev分支与master分支立即就会不重合,不在一条直线上。
再给dev分支新增一个commit "dev新增代码1"可以看出提交节点是按事件排序的,可以看到dev分支的节点显示再master前面。
3,切换到master分支,直接merge dev
提示产生冲突,因为master前两次提交,与dev最后一次提交都更改过了readme.txt文件,所以合并分支会产生冲突。
合并代码,->commit "合并分支dev到master上面"
git 分支就显示如下图所示
!(https://ddns.chensina.cn:29000/afatpig/blog/image-20220724214320960.png)
总之,merge dev分支到master上会出现以下结果:
会保留所有的commit(hashId不变)
按提交顺序排序
产生新的commit点(Merge branch ‘XXX’ into develop)(这里的我的显是合并分支dev到master上面)
2.2 使用rebase合并dev分支到master上
1,切换当前分支为dev
git switch dev
~~~`
**2,给dev变基到master (如果有冲突需解决冲突)**
~~~ bash
git rebase master
3,提示解决冲突,去冲突文件解决冲突。解决冲突后,执行命令
git add '冲突文件'
git rebase --continue
执行完git rebase --continue
进入以下界面
这里是修改commit 信息
修改完按:wq
保存退出。
此时dev
分支和master
分支已经重合
4,合并dev代码到master上
git switch master
git merge dev
此时master分支与dev分支在同一个提交节点了。