git rebase原理和使用
1、rebase与merge的区别
git rebase: 变基/衍合,意即改变分支的根基。rebase的功能类似于merge,从某种程度上来说,rebase与merge可以完成类似的工作,不过二者的工作方式有着显著的差异。
merge的工作方式
rebase的工作方式: git checkout mywork, git rebase origin 切换到mywork分支,基于mywork分支将origin合并进来(以变基rebase的方式合并进来)。
注意:rebase会修改分支提交的历史。
2、rebase注意事项
rebase过程中也会出现冲突,解决冲突后,使用git add添加,然后执行git rebase --continue,接下来git会继续应用余下的补丁。
任何时候都可以通过如下命令终止rebase,分支会恢复到rebase开始前的状态 git rebase --abort
rebase最佳实践:
不要对master分支执行rebase,否则会引起很多问题。
一般来说,执行rebase的分支都是自己的本地分支,没有推送到远程版本库。
3、merge和rebase使用比较
3.1、merge使用
初始化一个git仓库
初始化仓库后,默认有一个master分支,在master分支创建一个文件
基于master分支创建两个分支:develop分支和mywork分支
切换到develop分支,创建两次提交
切换到mywork分支,创建两次提交
先使用merge合并看下效果
解决冲突
将不要的删除,保存退出。然后git add a.txt, git commit
使用merge合并的效果:
使用gitk查看
3.2、rebase使用
为了测试rebase,进行一次版本回退
执行 git rebase
vi a.txt 删除不要的代码,保存退出
解决完这次冲突后git rebase --continue继续后面的补丁,后面由于不会再有冲突,所以自动合并完成。查看a.txt文件内容:
gitk查看,提交是一条线,没有分叉
查看日志,mywork分支的两次提交以补丁的形式合并到devlop的最后一次提交上,并且这两次补丁提交id改变了。
posted on 2021-11-20 12:42 wenbin_ouyang 阅读(7914) 评论(1) 编辑 收藏 举报