前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 高级合并工具 Merge 和 Rebase 简单介绍(一)

Git 高级合并工具 Merge 和 Rebase 简单介绍(一)

作者头像
zinyan.com
发布2023-07-13 17:02:34
8310
发布2023-07-13 17:02:34
举报
文章被收录于专栏:zinyanzinyan

1.介绍

我们在通过命令远程拉取代码时,特别是大家共同维护的项目。经常会出现Merge和Rebase两种模式的选择。

但是貌似两种都可以拉取和合并代码。但是Git不可能提供两个一样的功能让我们选择啊。

那这两者之间的区别是什么?

我们在使用TortoiseGit等GUI界面进行操作的时候,很多时候会弱化Merge和Rebase。如果我们长时间都是通过GUI界面进行操作的话,那么这两者之间的关系并不太容易把握。

而使用Android Studio等工具内部集成的Git,每次从远端拉取时就会出现下面的对话框让我们选择:

而使用TortoiseGit 工具通过面板拉取时,只会有一个拉取操作。

但是其实它执行也是执行了相关的命令,示例如下图:

2. 高级合并

这两个操作,其实主要就是为了解决代码同步合并的问题。不管多复杂,它们两个核心述求就是为了针对不同的分支合并需求而创建的。

项目多人合作开发的情况下,版本控制和专门的修改分支会越来越多,当分支开的那么多的情况下。代码的各种合并同步就是一个很复杂的操作了。

2.1 Merge-合并

Merge incoming changes into the current branch (将传入的更改合并到当前分支)。

一般比较常见的操作都是通过Merge进行的合并。但是该合并方式下有多种策略,并不是无脑的将文件内容同步。

主要有:Fast-foward,Recursice,Ours,Octopus 等几种策略。git会自动根据commit的提交记录集选择合适的策略进行合并操作。

2.2 Rebase-变基

Rebase the current branch on top of incoming changes(在传入更改的基础上重新设置当前分支的基址)

我们的分支合并如果弄错了。会出现已经修改的代码被合并错误了。

相较于Merge的分支合并,Rebase会改变提交的历史,这也是为什么它是会在更新基础上重置当前分支。

3. 后记

本篇只是简单介绍一下Merge和Rebase。介绍的比较短,我们很多时候其实并不太需要了解这两种的区别,但是如果由你来负责一个项目的代码维护,review其他同事提交的代码时。那么这两种提交逻辑就必须要弄明白。否则会耗费很多无效的时间在代码的各种合并上去。

但是普通使用的情况下:开发只属于自己的分支时使用rebase ,可以减少无用的commit被合并到主分支中。

而多人合作情况下,使用merge,在减少冲突的同时,也让每个人的提交都有迹可循。

(ps:之后通过实际场景进行介绍,才能让大家更明白merge和rebase的区别。等有空了写一篇相关的学习内容吧,本篇只是一个基础开端)

附上一些参考资料:

git合并原理 - 知乎 (zhihu.com)

Git - 高级合并 (git-scm.com)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.介绍
  • 2. 高级合并
    • 2.1 Merge-合并
      • 2.2 Rebase-变基
      • 3. 后记
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档