Git(15)- Git 分支 - 分支开发工作流_第15讲 git分支-程序员宅基地

技术标签: git  运维  linux  Git&Github&Gitee  

文章目录

超详细 Git 图文版小白教程(持续更新)

现在你已经学会新建和合并分支,那么你可以或者应该用它来做些什么呢? 在本节,我们会介绍一些常见的利用分支进行开发的工作流程。而正是由于分支管理的便捷, 才衍生出这些典型的工作模式,你可以根据项目实际情况选择一种用用看。

长期分支

因为 Git 使用简单的三方合并,所以就算在一段较长的时间内,反复把一个分支合并入另一个分支,也不是什么难事。 也就是说,在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;你可以定期地把某些主题分支合并入其他分支中。

许多使用 Git 的开发者都喜欢使用这种方式来工作,比如只在 main 分支上保留完全稳定的代码——有可能仅仅是已经发布或即将发布的代码。 他们还有一些名为 develop 或者 next 的平行分支,被用来做后续开发或者测试稳定性——这些分支不必保持绝对稳定,但是一旦达到稳定状态,它们就可以被合并入 main 分支了。 这样,在确保这些已完成的主题分支(短期分支,比如之前的 iss53 分支)能够通过所有测试,并且不会引入更多 bug 之后,就可以合并入主干分支中,等待下一次的发布。

事实上我们刚才讨论的,是随着你的提交而不断右移的指针。 稳定分支的指针总是在提交历史中落后一大截,而前沿分支的指针往往比较靠前。

趋于稳定分支的线性图:
在这里插入图片描述

通常把他们想象成流水线(work silos)可能更好理解一点,那些经过测试考验的提交会被遴选到更加稳定的流水线上去。

趋于稳定分支的工作流(“silo”)视图:
在这里插入图片描述

你可以用这种方法维护不同层次的稳定性。 一些大型项目还有一个 proposed(建议) 或 pu: proposed updates(建议更新)分支,它可能因包含一些不成熟的内容而不能进入 next 或者 main 分支。 这么做的目的是使你的分支具有不同级别的稳定性;当它们具有一定程度的稳定性后,再把它们合并入具有更高级别稳定性的分支中。 再次强调一下,使用多个长期分支的方法并非必要,但是这么做通常很有帮助,尤其是当你在一个非常庞大或者复杂的项目中工作时。

主题分支

主题分支对任何规模的项目都适用。 主题分支是一种短期分支,它被用来实现单一特性或其相关工作。 也许你从来没有在其他的版本控制系统(VCS)上这么做过,因为在那些版本控制系统中创建和合并分支通常很费劲。 然而,在 Git 中一天之内多次创建、使用、合并、删除分支都很常见。

你已经在上一节中你创建的 iss53hotfix 主题分支中看到过这种用法。 你在上一节用到的主题分支(iss53hotfix 分支)中提交了一些更新,并且在它们合并入主干分支之后,你又删除了它们。 这项技术能使你快速并且完整地进行上下文切换(context-switch)——因为你的工作被分散到不同的流水线中,在不同的流水线中每个分支都仅与其目标特性相关,因此,在做代码审查之类的工作的时候就能更加容易地看出你做了哪些改动。 你可以把做出的改动在主题分支中保留几分钟、几天甚至几个月,等它们成熟之后再合并,而不用在乎它们建立的顺序或工作进度。

考虑这样一个例子,你在 main 分支上工作到 C1,这时为了解决一个问题而新建 iss91 分支,在 iss91 分支上工作到 C4,然而对于那个问题你又有了新的想法,于是你再新建一个 iss91v2 分支试图用另一种方法解决那个问题,接着你回到 main 分支工作了一会儿,你又冒出了一个不太确定的想法,你便在 C10 的时候新建一个 dumbidea 分支,并在上面做些实验。 你的提交历史看起来像下面这个样子:

拥有多个主题分支的提交历史:
在这里插入图片描述

现在,我们假设两件事情:你决定使用第二个方案来解决那个问题,即使用在 iss91v2 分支中方案。 另外,你将 dumbidea 分支拿给你的同事看过之后,结果发现这是个惊人之举。 这时你可以抛弃 iss91 分支(即丢弃 C5C6 提交),然后把另外两个分支合并入主干分支。 最终你的提交历史看起来像下面这个样子:

合并了 dumbideaiss91v2 分支之后的提交历史:
在这里插入图片描述

请牢记,当你做这么多操作的时候,这些分支全部都存于本地。 当你新建和合并分支的时候,所有这一切都只发生在你本地的 Git 版本库中 —— 没有与服务器发生交互。

(本节没有操作,完全转自Git官方文档。)
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_46278037/article/details/120031375

智能推荐

Python编程之数组元素交换输出_python输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。-程序员宅基地

文章浏览阅读2.1k次。问题描述:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。源代码:#!/usr/bin/python# -*- coding: UTF-8 -*- def inp(numbers): for i in range(6): numbers.append(int(raw_input('输入一个数字:\n')))p = 0 def a..._python输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

L1-054 福到了 (15 分)_福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字-程序员宅基地

文章浏览阅读146次。L1-054 福到了 (15 分)“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格。而倒过来的汉字所用的字符由裁判指定。输入格式:输入在第一行中给出倒过来的汉字所用的字符、以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔;随后 N 行,每行给出 N 个字符,或者为 @ 或者为空格。输出格式:输出倒置的网格,如样例所示。但是,如果这个字正过来倒_福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字

论文阅读《Coarse-to-Fine Spatio-Temporal Information Fusion for Compressed Video Quality Enhancement》_luo d, ye m, li s, et al. coarse-to-fine spatio-te-程序员宅基地

文章浏览阅读350次。文献《Coarse-to-Fine Spatio-Temporal Information Fusion for Compressed Video Quality Enhancement》D. Luo, M. Ye, S. Li and X. Li, “Coarse-to-Fine Spatio-Temporal Information Fusion for Compressed Video Quality Enhancement,” in IEEE Signal Processing Letters, _luo d, ye m, li s, et al. coarse-to-fine spatio-temporal information fusion

调用百度万年历接口判断输入的日期是否是工作日_调用百度日历接口-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏2次。由于开发需要,需要写一个判断当前是否是工作日的接口,网上找了很多免费的接口,怕不稳当,所以自己写了调用百度这样的接口来实现,同时做了判断,判断是否需要调休,是否是工作日实现代码如下:public class JsonTest { public static void main(String[] args) throws IOException, ParseException { String dateTest = "2020-9-28"; System.o_调用百度日历接口

【观察】浪潮网络:以场景化创新,重构智慧医疗-程序员宅基地

文章浏览阅读394次。申耀的科技观察读懂科技,赢取未来!毫无疑问,作为本次抗击疫情最重要的“主战场”,医疗机构在这其中无疑发挥了重要的价值。同样,作为医疗机构守护医患健康中的重要工具,医院的信息化、数字化和...

C#语言 求最近数N的2次方数-高效处理 性能第一_c# 求2次方-程序员宅基地

文章浏览阅读1k次。将 N 和 最接近N且小于N的2次元数 以及 最接近N且大于N的2次元数 转换成 二进制 对比看图不难发现 如果将N的尾数全部置1 然后+1 可以得到大于N且最接近N的 二次元数 Max由 Max / 2 或者 右移一位得出 小于N且最接近N的二次元数Min思路理清了 那接下来我们动手开始撸吧~第一步 将N的所有位置1// 公式: 将X的第N位置1//原理很简单 大家对下二进制就知道了 这里不过多阐述x = x | (1 << n)代码如下:N|= N >>_c# 求2次方

随便推点

图片存储得几种方式_大型信息系统图片存储位置-程序员宅基地

文章浏览阅读5.7k次。我的理解有4个:1:放在项目本身得文件夹中,直接部署到服务器上2:存放在磁盘中,然后数据库中存放路径,读取得时候传路径。这个适合小项目3:将图片转换成二进制文件,但是不建议这样做,因为会给数据库造成压力。4:存放在云存储器上,也是在数据库上存地址,不过是云地址,使用得时候给前端,然后前端会自动向专门得云服务器上去获取。所有得安全,优化,带宽,缓存命中,都是由云服务器去保证。(比如:..._大型信息系统图片存储位置

Xinlinx 7系列 FPGA 总览_xinlinx个系列区别-程序员宅基地

文章浏览阅读2.4k次。本文转载自:Xinlinx 7系列FPGA概览转载说明:关于7系列FPGA的认识,这篇文章写的还是比较好的,虽说数据手册上都有,但是不是每个人都有功夫去看的,这样看起来,这篇博文就很有意义,对7系列FPGA有一个总体的认识。最后谢谢原文作者。1.Xilinx的四个工艺级别Xilinx目前主要产品有四个工艺等级,通常情况下,Xilinx的产品每个工艺都会有Spartan、Artix、Ki..._xinlinx个系列区别

解决QT+VS中无法打开ui_xxx.h文件_qt中ui_widget.h找不到-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏14次。在VS中添加插件Qt VS Tools,就可以在VS中写QT项目了,但是VS中写QT项目和在QT Creater中并不完全一样,VS中的项目文件结构是:但是如图中的widget.h文件中包含了ui_widget.h文件,但提示无法打开ui_widget.h文件,双击ui_widget.h也无法打开此文件。解决办法如图依次点击,然后等待几秒就可以打开该文件。选中ui_widget.h文件..._qt中ui_widget.h找不到

python day14 文件操作_将文本写到mydata.txt文件中-程序员宅基地

文章浏览阅读256次。目录:文件操作文件:什么是文件文件的缺点文件的操作步骤:文件的打开函数 open文件操作分为两种类型的操作:文本文件模式:各操作系统默认的换行符:练习:练习:答案见:二进制文件操作文件操作文件:什么是文件文件是用于数据存储的单位文件通常用来长期存储设置文件中的数据是以字节为单位进行顺序存储的文件的缺点内..._将文本写到mydata.txt文件中

k8s学习笔记_hostname "node01" could not be reached-程序员宅基地

文章浏览阅读1.1k次。kubernetes学习_hostname "node01" could not be reached

RTTI symbol not found for class ‘QObject‘ + double free or corruption_rtti symbol not found for class 'qobject-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏6次。记录一个崩溃crash的问题。在方法中使用一个栈类对象时,程序出现崩溃。原因是:QT中 如果一个子级对象是new生成的(堆对象),当父级对象销毁时,会自动调用operator delete删除他的所有子级对象。这样有三种情况:如果一个子级对象是new生成的,他无需自己销毁;如果一个子级对象不是new生成的(栈对象),他在父级对象销毁前自己主动销毁自己,没问题。如果一个子级对象不是new生成的(栈对象),他不在父级对象销毁前自己主动销毁自己,父级对象调用operator delete他时就会出_rtti symbol not found for class 'qobject