Git 变基与合并

这篇具有很好参考价值的文章主要介绍了Git 变基与合并。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Git 变基与合并

Git 提供了两种将分支合并到主分支的方法:rebase(合并) 和 merge(变基)。rebase 和 merge 都是用于集成某个分支到另一个分支的方法。然而,它们采用的方法不同。merge 会将两个分支直接合并成一个新的提交,而 rebase 则是将某个分支的提交复制到另一分支上,然后插入到目标分支的合适位置。下面分别介绍这两个版本控制策略

1、变基

1.1、变基的工作原理

两个分支master和feature,其中feature是在提交点B处从master上拉出的分支,master上有一个新提交M,feature上有两个新提交C和D,如下:

git变基和合并,开发工具,git

下图为变基后的提交节点图

git变基和合并,开发工具,git

feature:待变基分支、当前分支;master:基分支、目标分支。当执行rebase操作时,git会从两个分支的共同祖先开始提取待变基分支上的修改,然后将待变基分支指向基分支的最新提交,最后将刚才提取的修改应用到基分支的最新提交的后面。

通俗解释:rebase(变基),可以直接理解为改变基底。feature分支是基于master分支的B拉出来的分支,feature的基底是B。而master在B之后有新的提交,就相当于此时要用master上新的提交来作为feature分支的新基底。实际操作为把B之后feature的提交存下来,然后删掉原来这些提交,再找到master的最新提交位置,把存下来的提交再接上去(新节点新commit id),如此feature分支的基底就相当于变成了M而不是原来的B了。

1.2、变基操作的优缺点

优点:

  • 历史记录简单 - rebase可以使得历史记录更加线性和简单,比merge更容易理解
  • 减少冗余的commit - rebase会将当前分支的修改整合到目标分支中,因此可以减少不必要的commit数量

缺点:文章来源地址https://www.toymoban.com/news/detail-783350.html

  • 可以改变历史记录 - rebase会改变历史记录,因此需要谨慎使用
  • 可能会丢失提交记录 - 如果由于一些原因,rebase失败,一些提交记录可能会丢失

2、合并

merge是将两个分支的内容合并成一个新的分支,让这个新的分支包含两个分支的内容。当执行merge时,Git将会创建一个新的commit,合并两个分支的代码。

优点:

  • 简单易懂 - merge非常直观和易于理解
  • 保留历史记录 - 由于merge创建了一个新的commit,因此可以在历史记录中查看合并的结果,并且不会改变历史记录

缺点:

  • 会产生冗余的commit- 由于merge会创建一个新的commit,因此可能会产生许多不必要的commit。
  • 历史记录较为复杂 - 多个merge操作可能会导致历史记录变得复杂,难以理解。

到了这里,关于Git 变基与合并的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git-团队开发及版本控制工具(操作指南)

    下载地址:Git (git-scm.com) 或 Git for Windows 安装:一般情况一直next就行,详细请看:Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-CSDN博客 安装之后校验是否成功:如果出现版本号就说明安装成功了 2.1初始化本地仓库 初始化之后文件夹有一个.git文件,如果没有请

    2024年03月15日
    浏览(103)
  • 开发工具:git 提交时过滤不必要的文件

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。如果小伙伴们觉得不错就一键三连吧~ 有时候我们在 IDEA 中 git 提交时会出现一些不必要的文件让我们提交,那么这个时候我们如何避免这些文件被 git 识别到,请看下方解决方案。 比如这个提交,会有很多的这种:Ma

    2024年02月11日
    浏览(42)
  • Linux基础——Linux开发工具(make/makefile,git)

    前言:在经过前面两篇学习,大家对Linux开发工具都有一定的了解,而在此之前最重要的两个工具就是vim,gcc。 如果对这两个工具不太了解,可以先阅读这两篇文章: Linux开发工具 (vim) Linux开发工具 (gcc/g++) 首先让我们来初步了解一下本篇的目标: 1. 学习make/makefile,并能简单

    2024年04月27日
    浏览(36)
  • C/C++开发,关闭vscode中的插件git工具

    安装git后,有git配置的路径,vscode会通过git进行检测。关闭vscode中的插件git工具方法如下:

    2024年02月11日
    浏览(49)
  • 12.(开发工具篇vscode+git)vscode 不能识别npm命令

    问题描述: 解决方式: (1)右击VSCode图标,选择以管理员身份运行; (2)在终端中执行get-ExecutionPolicy,显示Restricted,表示状态是禁止的; (3)这时执行set-ExecutionPolicy RemoteSigned; (4)此时再执行get-ExecutionPolicy,显示RemoteSigned,则表示状态解禁,可以运行 (5)重启

    2024年02月16日
    浏览(37)
  • 18.(开发工具篇Gitlab)Git如何回退到指定版本

    首先: 使用git log命令查看提交历史,找到想要回退的版本的commit id. 第一步:git reset --hard 命令是强制回到某一个版本。执行后本地工程回退到该版本。 第二步:利用git push -f命令强制推到远程 如下所示: 优点:干净利落,回滚后完全回到最初状态。 缺点: (1)需要找到你要

    2024年02月04日
    浏览(59)
  • Git 管理工具 SourceTree 的使用(上手简单,不熟悉git命令的开发者必用)

    目录 一、SourceTree 概述 二、SourceTree 使用方法 1. 克隆 Git 仓库至本地 2. 推送本地的文件至远程仓库 3. 创建/切换/合并分支 4. 版本回退         SourceTree 是一款免费的 Git 和 Hg 客户端管理工具,支持 Git 项目的创建、克隆、提交、push、pull 和合并等操作。它拥有一个精美简

    2024年02月01日
    浏览(54)
  • 【linux基础(七)】Linux中的开发工具(下)--make/makefile和git

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到开通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 如果你不知道什么是vim和gcc 请先阅读这两篇文章后再学习本节: 文章一: vim和yum 文章二: gcc/g++ 本章重点: 本篇文章会着重讲

    2024年02月08日
    浏览(36)
  • 【手写数据库toadb】02 开发数据库内核准备阶段-git工具使用

    ​ 专栏内容 : 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学

    2024年01月24日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包