【Git】分支管理

embedded/2025/1/14 14:11:26/

git__0">git 分支管理

在 Git 中,分支合并是一个常见的操作,用于将一个分支的更改集成到另一个分支中。合并后会生成一个新的提交记录,这个过程可以通过多种方式实现。下面详细介绍几种常用的合并方法及其命令。

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

快进合并是最简单的情况,当目标分支的最新提交是你要合并分支的一个祖先时,Git 只需将指针向前移动即可完成合并。这种情况下不会生成新的提交记录

步骤:

  1. 切换到目标分支:
    git checkout main
    
  2. 合并源分支:
    git merge feature
    

如果 main 分支的最新提交是 feature 分支的一个祖先,那么 Git 会执行快进合并,直接将 main 分支的指针移动到 feature 分支的最新提交位置。

2. 非快进合并 (No Fast-Forward Merge)

如果你希望在合并时强制生成一个新的提交记录,即使可以进行快进合并,可以使用 --no-ff 选项。这样可以保留分支的历史记录,方便后续追踪。

步骤:

  1. 切换到目标分支:

    git checkout main
    
  2. 合并源分支,并生成一个新的提交记录:

    ⚠️注意:使用此命令时,【暂存区域】不能有文件,即所有修改需先提交,否则会执行失败

    git merge --no-ff feature
    

idea 终端窗口执行时,会自动生成一个新的提交记录,键入 :wq + 回车 即可。

自定义合并提交信息

在使用 git merge --no-ff 命令时,Git 会默认为你生成一条合并提交信息。不过,你也可以在合并时提供自定义的提交信息。要实现这一点,可以使用 --message-m 选项。

示例

假设你有一个 main 分支和一个 dev 分支,你希望将 dev 分支的更改合并到 main 分支,并生成一个新的提交记录,同时提供自定义的提交信息。

  1. 切换到 main 分支:

    git checkout main
    
  2. 合并 dev 分支,并提供自定义的提交信息:

    git merge --no-ff -m "Merge dev into main with custom message" dev
    

3. 解决合并冲突

当两个分支都对同一个文件的同一部分进行了修改时,Git 无法自动解决冲突,需要手动解决。

步骤:

  1. 切换到目标分支:
    git checkout main
    
  2. 尝试合并源分支:
    git merge feature
    

如果出现冲突,Git 会在冲突文件中标记出冲突的部分。你需要手动编辑这些文件,选择保留或修改冲突的内容。

  1. 解决冲突后,将文件标记为已解决:
    git add <conflicted-file>
    
  2. 完成合并:
    git commit
    

4. 拉取并合并远程分支

当你从远程仓库拉取并合并分支时,可以使用 git pull 命令,它实际上是 git fetchgit merge 的组合。

步骤:

  1. 切换到目标分支:
    git checkout main
    
  2. 拉取并合并远程分支:
    git pull origin feature
    

5. 三方合并 (Three-Way Merge)

在非快进合并中,Git 会使用三方合并策略。三方合并涉及三个不同的提交:

  • 基础提交 (Base Commit):两个分支的最近共同祖先。
  • 当前分支的最新提交 (HEAD)。
  • 要合并的分支的最新提交。

Git 会比较这三个提交,生成一个新的合并提交。


http://www.ppmy.cn/embedded/153854.html

相关文章

麦田物语学习笔记:实现根据物品详情显示

基本流程 1.代码思路 (1)新建ItemTooltip.cs用于控制ItemTooltip(这个是在Hierarchy里的)中的文本内容 回顾一下:对于物品描述(ItemTooltip)的UI有三个部分,第一部分是名字和类型,第二部分是物品详解,第三部分是金币图标以及价值的文本 (2)获取UI中的所有部分,因为item分为可出…

在 Alpine Linux 下通过 Docker 部署 PostgreSQL 服务器

简要介绍 Docker 是一个开源的容器化平台&#xff0c;它使得开发者能够轻松创建、部署和运行应用程序。通过使用 Docker&#xff0c;程序员可以把应用及其所有依赖打包在一个轻量级的容器中&#xff0c;这样可以确保在不同环境中的一致性。PostgreSQL&#xff08;简称 psql&am…

MySQL:内置函数

1.时间函数 获取当前日期 年月日 获取当前的时间 时分秒 获取当前时间戳 自动转化为年月日时分秒 从时间戳截取日期部分 1990-10-1 10天 1990-10-1 - 10分钟 2025-1-11 - 1949-10-1相差多少天 现在的日期和时间 ‘ 案例 创建一个留言表 插入两条数据 查询一下 显示所有留言…

ThreadLocal 的使用场景

在现代电商平台中&#xff0c;ThreadLocal 常用于以下场景&#xff0c;特别是与线程隔离相关的业务中&#xff0c;以提高性能和简化上下文传递。 1. 用户上下文信息管理 场景&#xff1a;在用户发起的每次请求中&#xff0c;需要携带用户 ID、角色、权限等信息&#xff0c;而这…

TypeScript语言的学习路线

TypeScript语言的学习路线 TypeScript&#xff08;TS&#xff09;是由Microsoft开发的一种开源编程语言&#xff0c;是JavaScript的超集&#xff0c;提供了严格的类型检查和基于类的面向对象编程特性。随着前端开发的不断进步&#xff0c;TypeScript逐渐成为了现代前端开发的主…

Spark 与 Flink 的对比:哪个更适合实时处理?

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

【Rust】结构体示例与调试

目录 思维导图 1. 引言 2. 初始程序示例 3. 使用元组重构 4. 使用结构体重构 5. 调试与输出 6. 进一步的功能扩展 思维导图 1. 引言 本文通过一个计算矩形面积的程序&#xff0c;展示了如何从简单变量逐步重构到使用结构体&#xff0c;以提高代码的清晰度和可管理性。结…

量子技术的发展

量子技术作为一个前沿领域,近年来取得了显著进展,并且在多个领域都展示了潜力,尤其是在计算、通信、传感和加密等方面。尽管量子技术的商用化仍然处于早期阶段,但它的应用前景极为广泛,吸引了大量的研究投入和技术创新。以下是量子技术的最新进展、突破和相关产品的概述。…