返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Git的代码合入流程详解
  • 494
分享到

Git的代码合入流程详解

Git代码合入流程Git代码合入 2022-11-16 00:11:05 494人浏览 泡泡鱼
摘要

目录总述Rebase解决冲突适用情况操作方式Squash解决冲突适用情况操作方式Merge执行合入总述 代码合入流程用于减轻代码合入复杂度、简化主分支历史(具有线性的历史)、保证合入

总述

代码合入流程用于减轻代码合入复杂度、简化主分支历史(具有线性的历史)、保证合入代码对主分支的HEAD有效
代码合入分为两步

  • 解决冲突:将需要合入的分支变基到目标分支之上。保证合入代码对目标分支的HEAD有效。此时会解决所有代码冲突。
  • 执行合入:向目标分支提交merge请求,执行合入CI后完成合入。

其中第一步“解决冲突”的方法分为两种种情况:

  • Squash。如 feature分支 向 dev分支 合入;存在冲突的合入。此时会出现 合入过程冲突多、合入结果复杂(commit多)、合入message不清晰(未能完整描述改动内容)的问题。此时不需要保存历史commit,仅需要干净的将feature合入master。
  • Rebase。如 hotfix分支 向 dev分支 合入;feature分支 向 feature分支 合入。此时冲突少、合入结果简单、需要保存历史commit。

其中第二步“执行合入”应采用 merge no-fast-forward 的方式。确保合入信息可追溯和易回退。

Rebase解决冲突

适用情况

  • hotfix → develop
  • feature → feature
  • develop → master

其中commit数量少(1~2个),开发周期短(1day)。

操作方式

其中dev分支向master分支合入。通过执行 git log --all --graph --decorate 可看到如下图。两个分支已经分开,如果通过在master分支git merge合入且存在冲突,那么会触发三方合并在master生成merge commit污染主分支提交历史,这是我们不想看到的。

此时我们执行以下流程解决问题

git checkout dev  && git pull dev
git rebase master // 保证master与remote仓库一致
// 若发生冲突执行 git mergetool  解决冲突
git rebase --continue

此时可以看到master分支和dev分支干净得合在一起。经过单元测试并确认我们的改动没有bug后,我们可以push并开启mr。

Squash解决冲突

适用情况

  • feature → develop
  • gitlab → gerrit (此处为泊车自动同步代码中用到)

其中commit数量多(> 2个),开发周期长(> 1day),冲突量大(每个commit可能都有冲突)。

操作方式

此处仍然是将dev合入master。其中dev分支提交历史混乱(有tmp提交),commit号多且每个commit都与master有冲突。此时在master分支执行 git merge dev 会触发三方合并,且保留不必要的commit历史。不必要的提交信息如图

操作的初始状态如图


此处我们执行如下操作,在master分支解决冲突并压缩提交。随后checkout一个提交分支并开启mr。这有利于简化主分支提交。但需要小心,dev分支不能再使用,需要重新从master分支拉取新的dev。

git checkout master // 保证master与remote一致
git merge --squash dev
// 解决冲突  git mergetools  、  git commit -m <总结此次提交的所有内容>
git checkout -b <mr-branch>
git push xxxx

mater结果如图

Merge执行合入

这里强调使用merge no fast forward的目的是保留合入信息。

git checkout master
git merge --no-ff dev

以上就是Git的代码合入流程详解的详细内容,更多关于Git代码合入流程的资料请关注编程网其它相关文章!

--结束END--

本文标题: Git的代码合入流程详解

本文链接: https://lsjlt.com/news/172961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Git的代码合入流程详解
    目录总述Rebase解决冲突适用情况操作方式Squash解决冲突适用情况操作方式Merge执行合入总述 代码合入流程用于减轻代码合入复杂度、简化主分支历史(具有线性的历史)、保证合入...
    99+
    2022-11-16
    Git代码合入流程 Git代码合入
  • 详解git的管理流程
    Git是一个分布式版本控制系统,广泛应用于软件开发中。在项目开发过程中,使用Git可以帮助开发者协作,优化代码管理以及版本控制。下面介绍一下Git的管理流程:一、Git基本操作新建代码库使用git init命令在本地创建一个新的代码库。克隆...
    99+
    2023-10-22
  • Go流程控制代码详解
    目录Go流程控制1、条件语句IF2、条件语句switch3、条件语句select4、循环语句for5、循环语句range 6、循环控制goto、break、…...
    99+
    2023-05-16
    Go流程控制代码 Go流程控制
  • Git代码提交流程及git命令的示例分析
    小编给大家分享一下Git代码提交流程及git命令的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!基本了解git命令是一些命令行工具的集合,它可以用来跟踪,...
    99+
    2023-06-09
  • Java控制流程示例代码详解
    目录用户交互Scanner、Scanner进阶使用用户交互ScannerScanner进阶使用顺序结构选择结构*if选择结构Switch选择结构循环结构*while循环do..whi...
    99+
    2024-04-02
  • 微信小程序详细登录流程(图解+代码流程)
    💂 个人网站: 【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴, 请点击【前端学习交流群】 微信小程序的登录和web端的登录有一点是不同的,小程序需要和微信的服务...
    99+
    2023-08-31
    前端 小程序 微信小程序 Powered by 金山文档
  • SpringBoot整合MyBatis的代码详解
    目录SpringBoot整合MyBatis依赖的导入大致目录相关文件配置创建数据库和相对应的Pojo类Service层的编写Controller层的编写登录测试SpringBoot整...
    99+
    2024-04-02
  • SpringBoot整合Shiro的代码详解
    shiro是一个权限框架,具体的使用可以查看其官网 http://shiro.apache.org/  它提供了很方便的权限认证和登录的功能.  而springboot作为一个开源框架,必然提供了和shiro整合的功能!接下来就用...
    99+
    2023-05-31
    spring boot shiro
  • Git工作流程:如何管理您的代码库?
    Git是一个强大的版本控制系统,它让我们可以轻松地管理代码库并跟踪代码的变化。在本文中,我们将介绍Git工作流程以及如何使用它来管理您的代码库。 Git的基本工作流程 Git的基本工作流程包括以下几个步骤: 初始化代码库 要使用Git...
    99+
    2023-11-12
    django http git
  • springboot整合mybatis流程详解
    目录1.mybatis是什么2.整合2.1 导入依赖2.2 创建包和类2.3 在application.yaml配置mybatis3.使用注解版mybaits4.实战过程1.myba...
    99+
    2024-04-02
  • Android调用密码锁屏校验的流程代码详解
    Android调用密码锁屏校验怎么实现呢?很多朋友到这一步的时候不知如何写代码了,下面小编把我写的核心代码分享出来,有需要的朋友直接拿去修改下即可使用! 1:获取manager ...
    99+
    2024-04-02
  • git代码合并的方法有哪些
    本文小编为大家详细介绍“git代码合并的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“git代码合并的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。git Merge这种合并是将两个分支的历...
    99+
    2023-06-27
  • 解决Git Revert 再次合代码无效问题
    目录背景Demo复现该问题用Squash方式解决该问题小结背景 将开发分支dev合并进主分支main以后,如果发现bug需要回滚代码时,我们常使用git revert完成操作,但是当...
    99+
    2024-04-02
  • Spring整合Mybatis具体代码实现流程
    目录原始方式读取mybatis配置文件,获取SqlSession SqlSessionFactory 等 package com.atguigu.rj1192.zyk; import...
    99+
    2024-04-02
  • OpenDataV低代码平台新增组件流程详解
    目录正文创建组件目录和文件初始化组件文件组件配置项样式配置属性配置属性使用总结正文 OpenDataV计划采用子库的方式添加子组件,即每一个组件都当做一个子库,子库有自己的依赖,而项...
    99+
    2024-04-02
  • git如何合并本地仓库的代码
    要合并本地仓库的代码,可以按照以下步骤操作:1. 首先,确保你已经切换到要合并代码的目标分支。可以使用`git branch`命令查...
    99+
    2023-09-16
    git
  • Spring整合JPA与Hibernate流程详解
    目录设置Spring的配置文件编写范例的Java类编写Customer实体类编写CustomerDao数据访问接口和类编写CustomerService业务逻辑服务接口和类编写测试类...
    99+
    2023-01-09
    Spring整合JPA Spring整合Hibernate
  • Sentinel整合Feign流程详细讲解
    修改84模块 84消费者调用提供者9003 Feign组件一般是消费侧 重点依赖 <!--SpringCloud openfeign --> <d...
    99+
    2024-04-02
  • SpringBoot示例代码整合Redis详解
    目录Redis 简介Redis 优势Redis与其他key-value存储有什么不同添加Redis依赖包配置Redis数据库连接编写Redis操作工具类测试Redis 简介 Redi...
    99+
    2024-04-02
  • Android编程输入事件流程详解
    本文实例讲述了Android编程输入事件流程。分享给大家供大家参考,具体如下: EventHub对输入设备进行了封装。输入设备驱动程序对用户空间应用程序提供一些设备文件,这些设...
    99+
    2022-06-06
    输入 输入事件 事件 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作