当前位置: 首页 > article >正文

Git(5):分支合并merge和rebase

git merge

假设有两个分支:master 分支和 feature 分支,现在需要将 feature 分支合并到 master 分支。

git checkout master

git merge feature

在合并分支时,git 提供了不同的合并策略,用于处理不同的合并场景。

  • Fast-forward

    如果源分支(feature)与目标分支(master)之间没有分叉,即 master 分支在上次同步之后没有新的提交,那么当执行 git merge feature 时,git 会直接将 master 分支的指针移动到feature 分支的最新提交上,而不会创建新的合并提交。

合并前:

在这里插入图片描述
进行合并:

在这里插入图片描述

合并后:
在这里插入图片描述
快速合并不生成单独的合并提示从而不会留下合并痕迹,所以可以使用 git merge --no-ff feature 强制 git 在合并时创建一个新的合并提交。

  • --no-ff

    如果 master 分支与 feature 分支之间存在分叉,即 master 分支产生了新的提交 M,此时无法快速合并,会采用 no-ff 方式进行合并,创建一个新的合并提示。如果两个分支存在代码冲突,需要先解决冲突再合并。

    合并前:
    在这里插入图片描述
    合并后:

在这里插入图片描述

这样,合并后的历史就不再是线性的,而是包含了一个明确的合并点。

git rebase

git rebase 用于将当前分支的更新重新应用到另一个分支的最新更新上,使得项目历史更加线性。

假设有两个分支:master 分支和 feature 分支。master 是主分支,feature 是从 master 分支的某个提交点拉出的功能分支。现在,master 分支上有了新的提交,我们想要在保持 feature 分支更改的同时,将这些更改重新应用到 master 分支的最新状态上。

变基前:
在这里插入图片描述
以 master 分支为基,对 feautre 分支进行变基:

意味着将 feature 分支上的所有提交按照顺序重新应用到 master 分支的最新提交上。这个操作会改变 feature 分支的提交历史,使其看起来像是直接在 master 分支的最新状态上进行的开发。

git checkout feature
git rebase master

可以简写为 git rebase master feature

在变基过程中,如果 git 发现 feature 分支上的某个提交与 master 分支上的某个提交存在冲突,它会暂停变基过程,并让你手动解决这些冲突。解决冲突后,你需要使用 git add 命令将解决冲突后的文件添加到暂存区,然后使用 git rebase --continue 命令继续变基操作。

变基后:
在这里插入图片描述
rebase 操作过程中,只有当前分支(feature)的操作历史会被改变,而基分支(master)的操作历史不会变化。


http://www.kler.cn/news/318997.html

相关文章:

  • Linux突发网络故障常用排查的命令
  • andriod studio 学习1
  • python中网络爬虫框架
  • 【垃圾识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目选题+TensorFlow+图像识别
  • Java Web应用升级故障案例解析
  • 云栖实录 | 阿里云 OpenLake 解决方案重磅发布:多模态数据统一纳管、引擎平权联合计算、数据共享统一读写
  • 使用 UWA Gears 测试小游戏性能
  • Python GUI 编程:tkinter 初学者入门指南——标签
  • # 利刃出鞘_Tomcat 核心原理解析(十一)-- Tomcat 附加功能 WebSocket -- 3
  • Elasticsearch 应用实战:从基础到高级实践
  • 网口环保212设备数据 转 profinet IO项目案例
  • 利用人工智能改变视频智能
  • 《AI办公类工具表格处理系列之三——GPT-Excel》
  • 第十四届蓝桥杯嵌入式国赛
  • 【JVM】双亲委派模型
  • JDk17新特性
  • html TAB、table生成
  • netfilter和iptables--netfilter源码篇
  • 说说明计算机视觉(CV)技术的优势和挑战。
  • harmonyos面试题
  • 基于vue框架的宠物托管系统设计与实现is203(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2024.08.25-2024.08.31
  • 52 文本预处理_by《李沐:动手学深度学习v2》pytorch版
  • PHP 递归遍历目录
  • C++20 模块化(Modules)
  • 物理学基础精解【17】
  • 等保测评新趋势:企业如何领跑网络安全赛道
  • 5--SpringBoot项目中菜品管理 详解(一)
  • Matlab进阶绘图第68期—带分组折线段的分区柱状图
  • 基于STM32的电压检测WIFI模拟