深入了解 Git Merge:用法、类型与合并冲突处理

文章目录

  • 深入了解 Git Merge:用法、类型与合并冲突处理
    • 一、Git Merge 是什么?
    • 二、Git Merge 的工作流程
    • 四、Git Merge 的类型
      • 1. Fast-forward Merge(快进合并)
      • 2. Three-way Merge(三方合并)
    • 四、Git Merge 示例
      • 假设你有如下 Git 分支情况
      • 五、处理合并冲突
      • 六、合并 vs. 变基(Rebase)
    • 七、总结

深入了解 Git Merge:用法、类型与合并冲突处理

一、Git Merge 是什么?

git merge 是 Git 中用于合并分支的命令,通常用于将一个分支的更改合并到当前分支。

二、Git Merge 的工作流程

  • 你需要在目标分支(通常是 maindevelop)上执行 git merge,并提供你想合并的分支名称。
  • Git 会尝试将源分支的更改应用到当前分支上。
  • 如果两个分支没有冲突,Git 会直接合并。
  • 如果有冲突,需要手动解决冲突后再提交。

四、Git Merge 的类型

Git Merge 主要有两种模式:

1. Fast-forward Merge(快进合并)

当目标分支是源分支的祖先时,Git 只需将目标分支的指针直接移动到最新提交,无需创建新提交。

示例:

git checkout main     # 切换到主分支
git merge feature     # 合并 feature 分支(如果 main 没有新的提交,会快进合并)

效果:
main 分支的指针会直接移动到 feature 分支的最新提交,不会产生额外的合并提交。

2. Three-way Merge(三方合并)

当两个分支各自有独立的提交时,Git 需要创建一个新的合并提交,将两个分支的内容合并。

示例:

git checkout main     # 切换到主分支
git merge feature     # 合并 feature 分支

如果 mainfeature 分支都有新的提交,Git 会创建一个新的合并提交。

示例合并提交:

Merge branch 'feature' into main

四、Git Merge 示例

假设你有如下 Git 分支情况

* f3d5e2d (feature) 新增登录功能
* a8c2b1a (main)    修复 bug

你希望把 feature 分支合并到 main,可以执行以下命令:

git checkout main  # 切换到 main 分支
git merge feature  # 合并 feature 分支

如果没有冲突,Git 会直接合并,并生成一个新的合并提交:

Merge branch 'feature' into main

五、处理合并冲突

如果 Git 发现相同文件的相同部分在两个分支中被修改,它会提示合并冲突(merge conflict),例如:

Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

此时,你需要:

  1. 手动编辑 index.html,解决冲突(删除冲突标记 <<<<<<, ======, >>>>>>)。

  2. 使用 git add index.html 标记解决冲突。

  3. 提交合并结果:

    git commit -m "解决合并冲突"
    

六、合并 vs. 变基(Rebase)

如果不想创建合并提交,可以使用 git rebase,它会把 feature 分支的提交一个个移动到 main 分支的最新提交之上,使 Git 历史更整洁。

git checkout feature
git rebase main

但是,git rebase 可能会导致冲突处理更加复杂,因此需要谨慎使用。

七、总结

  • git merge 用于将一个分支的更改合并到当前分支。
  • 快进合并(fast-forward merge) 适用于目标分支无新提交的情况,不会产生新的合并提交。
  • 三方合并(three-way merge) 适用于两个分支都有新提交的情况,会创建新的合并提交。
  • 处理冲突时,需要手动修改文件,git add 标记解决后再 git commit
  • git merge 适用于团队协作,而 git rebase 适用于保持历史清晰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek助力Vue开发:打造丝滑的键盘快捷键

DeepSeek助力Vue开发&#xff1a;打造丝滑的键盘快捷键 大家好&#xff0c;给大家分享一篇文章&#xff01;并提供具体代码实现帮助大家深入理解&#xff0c;彻底掌握&#xff01;如果能帮助到大家或给大家一些灵感和启发&#xff0c;欢迎收藏关注。&#x1f495;&#x1f495;…

FreeRTOS 队列结构体 xQUEUE 深度解析

一、核心成员与功能设计 FreeRTOS 的队列结构体 xQUEUE 是任务间通信&#xff08;IPC&#xff09;的核心数据结构&#xff0c;通过统一的设计支持队列、信号量、互斥量等多种同步机制。其设计体现了 ​**"数据拷贝 结构复用"** 的理念&#xff0c;兼顾轻量化与扩展…

斜对角线的应用

引入 题目描述 经典应用&#xff1a;八皇后问题 dg和udg数组的解释 对角线 d g [ u i ] d g [ u i ] dg[ui]dg[ui] dg[ui]dg[ui]&#xff0c;反对角线 u d g [ n − u i ] u d g [ n − u i ] udg[n−ui]udg[n−ui] udg[n−ui]udg[n−ui]中的下标 u i ui ui和 n − …

简单聊聊Oracle和MySQL数据库的区别和使用场景

对于IT的技术人员&#xff0c;MySQL是非常熟悉的开源数据库&#xff0c;在各个行业被广泛应用。但是对于Oracle数据库&#xff0c;很多专业的IT从业人员不太了解&#xff0c;今天就来聊一聊Oracle和MySQL的一些区别。 1. 使用场景 首先MySQL是在各种IT公司或者非IT公司广泛应用…

STM32学习笔记之存储器映射(原理篇)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

mapbox V3 新特性,添加三维球鹰眼图控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️mapbox-gl-globe-minimap 三维球体鹰眼…

MySQL-调优策略-SQL语句

引言 架构调优&#xff0c;在系统设计时首先需要充分考虑业务的实际情况&#xff0c;是否可以把不适合数据库做的事情放到数据仓库、搜索引擎或者缓存中去做&#xff1b;然后考虑写的并发量有多大&#xff0c;是否需要采用分布式&#xff1b;最后考虑读的压力是否很大&#xf…

6502电气集中联锁道岔控制电路的工作过程

6502电气集中联锁道岔控制电路的工作过程主要包括选择进路、转换道岔、锁闭进路、开放信号和解锁进路等环节&#xff0c;以下是其具体工作过程模拟&#xff1a; 选择进路&#xff1a; 按压按钮&#xff1a;操作人员在控制台上按压进路两端的按钮&#xff0c;如始端按钮和终端按…

DS足球监控【比分直播】监控,钉钉实现自动提醒

文章目录 目标网站分析详细分析提醒工具代码截图成功提示对爬虫、逆向感兴趣的同学可以查看文章,一对一小班教学:https://blog.csdn.net/weixin_35770067/article/details/142514698 目标网站分析 https://live.dszuqiu.com/监控目标:实现固定时间内对比分监控,实现自动下单…

基于ssm的医院预约挂号系统

一、系统架构 前端&#xff1a;jsp | bootstrap | jquery | css | ajax 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | tomcat 二、代码及数据 三、功能介绍 01. 注册 02. 登录 03. 首页 04. 医院挂号 05. …

华为OD机试A卷 - 快递业务站 计算快递主站点(C++ Java JavaScript Python )

最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 题目描述 快递业务范围有 N 个站点,A 站点与 B 站点可以中转快递,则认为 A-B 站可达, 如果 A-B 可达,B-C 可达,则 A-C 可达。 现在给 N 个站点编号 0、1、…n-1,用 s[i][j]表示 i-j 是否可…

三维动态规划-LeetCode3418. 机器人可以获得的最大金币数

太爽了&#xff01;做完这道题&#xff0c;让我感觉就像是斩杀了一条大龙&#xff01;历时72天&#xff0c;分3次花掉30小时。终获突破&#xff01; 零、题目 3418. 机器人可以获得的最大金币数 给你一个 m x n 的网格。一个机器人从网格的左上角 (0, 0) 出发&#xff0c;目…

相生、相克、乘侮、复杂病机及对应的脏腑功能联系

一、五行相生关系&#xff08;母子关系&#xff09; 五行生序脏腑关系生理表现举例木生火肝&#xff08;木&#xff09;滋养心&#xff08;火&#xff09;肝血充足则心血旺盛火生土心&#xff08;火&#xff09;温煦脾&#xff08;土&#xff09;心阳充足则脾胃运化功能正常土…

Ubuntu22.04搭建freeradius操作说明

Ubuntu22.04搭建freeradius操作说明 更新依赖库 sudo apt update sudo apt install build-essential sudo apt install libtalloc-dev sudo apt install libssl-dev 按照freeradius sudo apt install freeradius 修改freeradius配置 文件路径如下 /etc/freeradius/3.…

es中安装ik分词器

在线安装ik插件&#xff08;较慢&#xff09; docker exec -it es /bin/bash ./bin/es-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip 看到报错了&#xff0c;我访问一下。就是没有了…

最大字段和问题 C++(穷举、分治法、动态规划)

问题描述 给定由n个整数&#xff08;包含负整数&#xff09;组成的序列a1,a2,…,an&#xff0c;求该序列子段和的最大值。规定当所有整数均为负值时定义其最大子段和为0 穷举法 最简单的方法就是穷举法&#xff0c;用一个变量指示求和的开始位置&#xff0c;一个变量指示结束…

如何理解三极管截至区、放大区、饱和区

一、 三极管符号&#xff1a; NPN : PNP: 二、Vce、与Ic曲线图 1、截至区&#xff1a;ib很小的时候就是截至区。因为Ib很小的时候等价于Ub很小&#xff0c;Ub如果不足以达到0.7V PN结就不会导通&#xff0c;所以三极管就…

电脑上我的windows目录下,什么是可以删除的

在Windows系统目录&#xff08;通常是C:\Windows&#xff09;中&#xff0c;大部分文件和文件夹都是系统运行所必需的&#xff0c;随意删除可能导致系统崩溃或程序无法运行。不过&#xff0c;部分文件可以安全清理。以下是详细指南&#xff1a; 可安全清理的内容 临时文件&…

工作中遇到的spark SQL小问题:包含某个或某些字符的条件

今天又来总结工作中遇到的问题了&#xff0c;今天是SQL&#xff0c;spark引擎 需求描述&#xff0c;筛选渠道包含”线上化“的数据 也就是讨论where里面的这个筛选条件怎么写 一般起手都是 where QD like %线上化%‘ 学习了其他的写法: 1.INSTR函数 where INSTR(QD,&quo…

Git 命令操作完全指南

Git 是现代软件开发中不可或缺的分布式版本控制系统。它不仅能追踪代码变更&#xff0c;还能协调多人协作、管理项目历史。本文从核心概念入手&#xff0c;逐步深入讲解 Git 的基础与高级命令&#xff0c;结合实用场景&#xff0c;帮助您从入门到精通。 一、Git 核心概念 理解…