TortoiseGit 入门指南09:合并

news2024/11/27 10:38:39

前面章节讲了 分支,提到一种常用的工作流:将默认分支(master)设置为主分支,保存最新的、随时可以发布的版本,所有的新特性、BUG都在另一个称为特性分支上增加或修改,然后在一个合适点,将特性分支内容 合并 到主分支。本节,讲述如何用 TortoiseGit 合并分支。

开发工作一般是在分支上进行的,当达到一定阶段,需要将更改合并到另一分支。比如常见的一种情况是:master 分支用于保存稳定版本,从 master 分支创建 develop 分支用于平时的开发分支,当 develop 功能告一段落后,需要将它合并到master 分支上。

需要注意的是,合并始终发生在工作区中,因此如果要将 develop 分支的更改合并到 master 分支上,首先要做的是切换到 master 分支上,然后,使用右键菜单TortoiseGitMerge…,打开合并对话框:

在这里插入图片描述

如果被合并的工作区有已修改的文件,则需要先提交这些修改。

可以选择想要合并的提交:

  • Branch:所选分支的最后一个提交
  • Tag:所选标签的提交
  • Commit:任意提交,你需要单击...启动提交日志对话框,然后选择需要的提交。也可以直接输入提交的哈希码或者提交名(比如HEAD~4)

还有一些可选项:

  • squash:合并时将更改的多个提交(commit)压缩成一个提交,这样在提交日志中只能看到一条提交。使用该选项合并后不会自动提交,需要手动做一次提交(commit)。不自动提交提供了一个审视合并结果的机会。

在这里插入图片描述

使用 squash 选项会丢失掉历史提交,所以需要慎重。只有确保被压缩的提交没有实际意义时才可以使用 squash 选项。

使用 squash 选项合并分支后,应将该分支删除掉,比如将 feature 分支合并到 develop 分支,选 squash 选项,Git 会将把 feature 分支上更改的提交压缩成一个提交然后合并到 develop 分支。合并结束后,应将 feature 分支删除掉,否则,如果再在 feature 分支上更改,然后再合并到 develop 分支,则 feature 分支上所有的更改提交都会合并倒 develop 分支,包括我们之前特意压缩的那些提交!

  • No Commit:合并后不自动提交,也要手动做一次提交。不自动提交提供了一个审视合并结果的机会。

在这里插入图片描述

  • No Fast Forward:即使合并是快速合并(fast-forward),也会强制生成一个合并提交(一般提交信息为Merge branch ‘分支名’)。在查看提交日志中,可以看到分支的图谱信息。如果要保留历史分支信息,建议勾选此选项。

    正常 合并、使用 No Fast Forward 选项合并、使用 Squash 选项合并区别:

总结一下合并的步骤:

假设将分支 develop合并到 master分支,不使用压缩提交选项 squash,合并的步骤:

  1. 使用右键菜单 TortoiseGitSwitch/Checkout…,切换到 master 分支;
  2. 使用右键菜单 TortoiseGitMerge…,选择 develop 分支,点击 OK 按钮;

假设将分支 develop 合并到 master 分支,使用压缩提交选项 squash,合并的步骤:

  1. 使用右键菜单 TortoiseGitSwitch/Checkout…,切换到 master 分支;
  2. 使用右键菜单 TortoiseGitMerge…,选择 develop 分支,勾选 squash 选项点击 OK 按钮;
  3. 弹出提交对话框,填写提交信息,点击 commit 按钮,完成合并。

注意合并可能引起冲突,详见《TortoiseGit 入门指南06:解决冲突》部分。

从 master 分支创建出 develop 分支,然后一直在 develop 分支上做新功能开发,master 分支保持不动。等到 develop 分支测试完毕后,合并到 master 分支上,这种情况下,master 分支不会出现分叉









读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
千金难买知识,但可以买好多奶粉

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

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

相关文章

Ubuntu下搭建Redis主从集群

目录 准备实例和配置 开启主从关系 测试配置 搭建的主从集群结构,只有主服务器与客户端进行写操作,通过主从同步数据,从服务器向客户端提供读操作 共包含三个节点,一个主节点,两个从节点。 这里我们会在同一台虚拟机…

【C++】多线程编程二(std::thread详解)

目录 std::thread详解 (1)启动线程 ①无参无返回的函数作为入参 ②函数对象(仿函数)作为入参 (2)不等待线程detch() (3)等待线程完成join() (4)向线程…

CANoe如何配置Master/Slave模式

系列文章目录 文章目录 系列文章目录前言一、CANoe配置端口二、CANoe配置Master模式三、CANoe配置Slave模式前言 随着智能电动汽车的行业的发展,车载以太网的应用越来越广泛,最近很多朋友在问CANoe Master/Slave模式如何设置,车载以太网物理层也有一项是测试Master/Slave模式…

springcloud整合nacos实现注册发现中心

文章目录 微服务为什么需要服务注册发现中心怎么使用注册发现中心1.本示例环境2.nacos 安装3.pom.xml4.application.yml5.NacosDiscoveryDemoController6.ServerConfig7.NacosNacosDiscoveryServiceImpl8.启动用http工具测试结果 如果需要完整源码请关注公众号"架构殿堂&q…

2023.7.16-偶数(奇数)的枚举

功能&#xff1a;输入一个整数&#xff0c;结果打印出所有不大于这个整数的偶数。 程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int a, b;printf("请输入一个整数&#xff1a;");scanf("%d",&a);print…

Android之Intent

意图介绍 一个意图(Intent)对象包含了目标组件、动作、数据、类别、附加数据、标志六个部分。 目标组件 目标组件可以帮助应用发送显式意图调用请求。在创建Intent时&#xff0c;可以通过setComponent方法来设置一个组件&#xff0c;如&#xff1a; //设置组件 intent.setC…

19.基于XML的自动装配

基于XML的自动装配 自动装配&#xff1a; 根据指定的策略&#xff0c;在IOC容器中匹配某一个bean&#xff0c;自动为指定的bean中所依赖的类类型或接口类型属性赋值 使用bean标签的autowire属性设置自动装配效果(默认为no和defalse不进行装配——bean中的属性不会自动匹配某个b…

Nodejs的字节操作(Buffer)

Hi I’m Shendi Nodejs的字节操作&#xff08;Buffer&#xff09; 字节操作是一个编程语言中必不可少的&#xff0c;而在NodeJs中也可以很方便的进行字节操作。 Buffer类 在 js 中没有二进制数据类型&#xff0c;但在一些情况下必须使用到二进制数据类型&#xff0c;比如网络通…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 OpenAI 集成搭建相似性搜索系统

目录 准备工作 检索图书 本文将讨论如何使用 OpenAI 的 Embedding API 与 Zilliz Cloud 搭建相似性搜索系统。 在本篇中你将看到如何使用 OpenAI 的 Embedding API 和 Zilliz Cloud 完成图书检索。当前,很多的图书检索方案,包括公共图书馆里使用的那些方案,都是使用关键词…

简单认识MySQL数据库事务

文章目录 一、MySQL事务的概念1、简介2、事务的ACID特点1.原子性&#xff08;Atomicity&#xff09;2.一致性&#xff08;Consistency&#xff09;3.隔离性&#xff08;lsolation&#xff09;4.持久性&#xff08;Durability) 3、并发访问表的一致性问题和事务的隔离级别1.并发…

C# Modbus通信从入门到精通(6)——Modbus RTU(0x04功能码)

1、04(0x04)读输入寄存器 使用该功能码能从远程地址中读取1到125个输入寄存器的值,每个输入寄存器都占两个字节,读取的输入寄存器数量由主站读取时指定。 2、发送报文格式 更详细的格式如下: 从站地址+功能码+起始地址高位+起始地址低位+寄存器数量高位+寄存器数量低位+…

备战求战 | 笔试强训6

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、十进制变量i的值为100&#xff0c;那么八进制的变量i的值为&#xff08;&#xff09; A. 146 B. 148 C. 144 D. 142 2、执行下面语句后的输出为 int I1; if(I<0)printf("****\n") …

全志F1C200S嵌入式驱动开发(串口驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于uboot、kernel和rootfs来说,他们的串口输出一般都是uart0。一般这么做,是没有问题的。只不过我们自己买的这块f1c200s电路板,设计者把uart转ttl的接口,改接到了uart1上面。…

自定义注解+AOP完成公共字段填充

在开发中&#xff0c;我们的实体类经常会有几个公共的字段&#xff0c;如下图的创建时间&#xff0c;修改时间就为各个类共有的字段&#xff1a; 目前项目中处理这些字段都是在每一个业务方法中进行赋值操作,如下: 如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业…

中级课程——信息收集(完结)

文章目录 概要whois备案号警告CDN历史解析查询子域名查询后台目录指纹C段&#xff0c;旁站真实IP与CDN端口证书其他资产社工漏洞情报实操案例 概要 whois 备案号 警告 CDN历史解析查询 子域名查询 工具推荐 或者找在线工具 后台目录 指纹 C段&#xff0c;旁站 真实IP与CDN 端…

无符号数和数据类型转换

无符号数 字符类型的无符号值&#xff1a; 所有的数据底层都是采用二进制来保存&#xff0c;而第一位用于保存符号位&#xff0c;当不考虑符号位时&#xff0c;所有的数都按照数值进行保存 #include <stdio.h>int main() {unsigned char a -65;printf("%u"…

JVM结构-堆

堆不是一种数据结构&#xff08;什么结构都可以存放在堆中&#xff09;堆内存的大小是可以调节的。类加载器读取了类文件后&#xff0c;需要把类、方法、常变量放到堆内存中&#xff0c;保存所有引用类型的真实信息JVM堆被同一个JVM实例中的所有Java线程共享JVM堆通常由某种自动…

Redis的过期策略以及内存淘汰机制

目录 一、过期策略1.1、定时删除1.1.1、过期1.1.2、过期的 key 集合1.1.3、定时扫描策略1.1.4、 Redis 中所有的 key 在同一时间过期了&#xff0c;会出现怎样的结果1.1.5、从库的过期策略 1.2、惰性删除1.3、定时删除和惰性删除的总结 二、缓存淘汰算法2.1、缓存淘汰算法概述2…

mysql 备份

mysql 备份 1. 备份的类型2.备份的类容3. 备份工具1&#xff1a;MySQL自带的备份工具2&#xff1a;文件系统备份工具3&#xff1a;其他工具 4:备份的策略1. 直接拷贝数据库文件2. mysqldump备份数据库3. mydumper备份数据库4.lvm快照从物理角度实现几乎热备的完全备份&#xff…

【Dart】006-类的定义和使用

【Dart】006-类的定义和使用 文章目录 【Dart】006-类的定义和使用一、类的定义1、概述2、简单定义与实例化代码示例运行结果 3、成员方法代码示例运行结果箭头函数写法 4、get 与 set 关键字概述代码示例运行结果 二、类的构造方法1、特点2、完整版的构造方法简化版完整版 3、…