木心

毕竟几人真得鹿,不知终日梦为鱼

导航

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  阅读(7804)  评论(1编辑  收藏  举报