wb.ouyang

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

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2020-11-20 springboot自动配置原理
点击右上角即可分享
微信分享提示