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

【Git】深入理解 Git 分支合并操作:git merge dev 命令详解

深入理解 Git 合并操作:git merge dev 命令详解


摘要:本文将深入探讨 Git 中的合并操作,以及如何使用 git merge dev 命令将dev 分支的修改合并到当前分支(假设当前分支为main 分支)中。通过详细的解释和示意图,读者将能够更好地理解 Git 合并操作的原理。

正文:在软件开发过程中,经常会使用版本控制系统来管理项目的代码,其中 Git 是目前最流行的版本控制系统之一。在 Git 中,合并(Merge)是将两个或多个分支的修改集成到一起的常见操作之一。
其中,git merge dev 命令用于将dev 分支的修改合并到当前分支中。


1. 合并操作的原理

从文件内容的角度来看,合并操作实际上是将两个被合并分支的最新提交中的文件内容进行整合,生成一个新的包含了这些整合后文件内容的合并提交


2. 使用示例

假设我们有两个分支:main 分支dev 分支。要将 dev 分支的修改合并到 main 分支中,可以执行以下命令:

git checkout main   # 切换到 main 分支
git merge dev         # 将 dev 分支的修改合并到 main 分支中

执行 git merge dev 命令后,Git 将会自动执行合并操作,并生成一个新的合并提交,将 dev分支 的修改整合到 main分支 中。

注意:如果在合并过程中发生了冲突,即同一文件的同一部分在两个分支上有不同的修改,Git 将会暂停合并操作,并提示你解决冲突。在手动解决冲突后,可以使用 git add 命令(Git 会将冲突标记在受影响的文件中,并将这些文件标记为 Unmerged paths)将冲突的文件标记为已解决,然后使用 git commit 命令提交解决方案,生成合并提交


3. 示例示意图

合并前:
合并前
合并后:
合并后

其中 C7 就是合并提交
注意:合并前后dev分支的commit历史线没变
而合并前后main分支的commit历史线 C 0 − > C 1 − > C 2 − > C 5 − > C 6 C0->C1->C2->C5->C6 C0>C1>C2>C5>C6变成了 C 0 − > C 1 − > C 2 − > C 3 − > C 4 − > C 5 − > C 6 − > C 7 C0->C1->C2->C3->C4->C5->C6->C7 C0>C1>C2>C3>C4>C5>C6>C7


相关文章:

  • 2024年,智慧文旅领航新时代,重塑旅行体验的未来篇章!
  • oppo手机备忘录记录怎么转移到华为手机?
  • wordpress 开源主题
  • Linux 开发工具vim、gcc/g++、makefile
  • TypeScript08:在TS中使用模块化
  • AGI概念与实现
  • 【接口测试】常见HTTP面试题
  • esp32 C3和S3 开发板电流对比
  • Docker基础教程 - 1 Docker简介
  • C++_运算符_逻辑运算符
  • Java面试——Redis
  • 基于51单片机的超声波测距及温度补偿技术研究
  • 【PyTorch笔记 04】F.cross_entropy的使用
  • ubuntu2204部署hbase2.3.7
  • C语言内存优化实用指南
  • 10个确保微服务与容器安全的最佳实践
  • Angular 2 DI - IoC DI - 1
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java 内存分配及垃圾回收机制初探
  • mysql中InnoDB引擎中页的概念
  • Promise面试题2实现异步串行执行
  • Python_网络编程
  • 我的面试准备过程--容器(更新中)
  • HanLP分词命名实体提取详解
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • $refs 、$nextTic、动态组件、name的使用
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)Unity3DUnity3D在android下调试
  • (转载)从 Java 代码到 Java 堆
  • ./configure,make,make install的作用(转)
  • .gitignore文件设置了忽略但不生效
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net MVC中使用angularJs刷新页面数据列表
  • /etc/skel 目录作用
  • @ModelAttribute 注解
  • [ C++ ] STL---string类的使用指南
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [20161101]rman备份与数据文件变化7.txt
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [C#基础]说说lock到底锁谁?
  • [c++] C++多态(虚函数和虚继承)
  • [HackMyVM]靶场 Wild
  • [HCTF 2018]WarmUp (代码审计)
  • [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]
  • [hdu2196]Computer树的直径
  • [IE技巧] 如何让IE 启动的时候不加载任何插件
  • [Java] 图说 注解
  • [JavaEE系列] wait(等待) 和 notify(唤醒)