1、Git分支简介

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着,你可以把你的工作,从开发主线上分离开来,然后在不影响主线的同时继续工作。 在很多版本控制系统中,这是一个略微低效的过程,常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。

有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。

为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。

理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。

2、Git分支与SVN分支的区别

(1)SVN分支简单说明

  1. SVN中的分支就是版本库中的另外一个完整目录,且这个目录拥有完整的实际文件。(就相当于把版本库复制一份)
  2. 如果团队工作成员想要开启新的分支,那么团队对中的每个人都会拥有和你一样的分支。(因为集中式版本管理系统)
  3. 在SVN中合并分支是非常麻烦和繁琐的,经常会发生有些分支或文件被遗漏的情况。
  4. 当你进行创建和切换分支比蜗牛还慢,简直让人无法忍受。

(2)Git分支简单说明

  1. Git中的分支就是创建一个指针指向某一个提交,就是我可以在Git中的任意一个提交点(commit point)创建分支。
  2. Git中可以任意在自己的本地版本库创建无限个分支。

    我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员,只要不合并到主仓库中,没有一个工作成员会被影响。

    等到我不需要这个分支时,我只要把它从我的本地版本库删除即可,无痛无痒。
  3. 在Git中很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
  4. 你可以从同一个工作目录下,快速的在几个分支间切换,无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本库是1个文件还是1万个文件。

(3)总结

  • 创建分支:Git分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。
  • 而且Git有本地分支,SVN无本地分支。

3、工作中为什么要使用分支

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样既安全,又不影响别人工作。

在分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

4、Git分支管理的好处

  1. 同时并行推进多个功能开发,提高开发效率。
  2. 版本迭代更加清晰。
  3. 利于代码review的实现,从而使整个团队开发更加规范,减少bug率。

提示:分支对于团队来说作用太大了。

比如说一个项目现在是1.0版,那么开发团队可能要同时进行1.1版和2.0版的开发,这样代码就会出现较大分歧。这时候就需要用到分支了,不同的任务组在不同的分支上开发,互相之间不会影响。

再比如说,需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,也就是说,主线上都是稳定的代码,可以直接拿来发布的。

参考:https://www.liaoxuefeng.com/wiki/896043488029600/896954848507552

​

『现学现忘』Git分支 — 38、Git分支介绍的更多相关文章

  1. 『现学现忘』Git分支 — 39、Git中分支与对象的关系

    目录 1.Git对象之间的关系 2.提交对象与分支的关系 (1)提交对象与分支的关系 (2)分支说明 (3)HEAD与分支的关系 1.Git对象之间的关系 我们之前学了Git的三个对象:提交对象.树对 ...

  2. 『现学现忘』Git分支 — 40、分支基本操作(一)

    目录 1.创建分支 (1)创建分支 (2)图示理解 2.查看分支列表 3.分支切换 4.查看所有分支的最后一个提交 5.删除分支 1.创建分支 (1)创建分支 Git 是怎么创建新分支的呢? 很简单, ...

  3. 『现学现忘』Git分支 — 41、分支基本操作(二)

    目录 6.新建一个分支并且使分支指向指定的提交对象 7.思考: 8.项目分叉历史的形成 9.分支的总结 提示:接上篇 6.新建一个分支并且使分支指向指定的提交对象 使用命令:git branch br ...

  4. 『现学现忘』Git基础 — 5、Git的协作模式

    目录 1.分布式工作流程 2.集中式工作流 3.分支工作流 4.GitFlow 工作流(最流行) 5.Forking 工作流(偶尔使用) 6.总结 1.分布式工作流程 与传统的集中式版本控制系统(CV ...

  5. 『现学现忘』Git基础 — 3、Git介绍

    目录 1.Git的历史 2.Git的特点 3.Git在项目协作开发中所解决的问题 1.Git的历史 Git是目前世界上最先进的分布式版本控制系统,开源.免费. Git 是 Linus (林纳斯)为了帮 ...

  6. 『现学现忘』Git基础 — 6、Git的操作流程

    目录 1.Git的基本操作流程 2.工作区.暂存区.版本库的区别 (1)工作区 (2)版本库 (3)暂存区 (4)通过新增文件理解三个区的关系 (5)说明 1.Git的基本操作流程 初始化一个本地版本 ...

  7. 『现学现忘』Git基础 — 12、Git用户签名(补充)

    目录 1.修改用户签名 2.取消用户签名 3.用户签名的优先级 4.总结本文用到的Git命令 1.修改用户签名 其实很简单,就是重新执行git config命令,换个用户名和邮箱地址就可以了,新配置的 ...

  8. 『现学现忘』Git基础 — 13、Git的基础操作

    目录 1.Git最基础的使用方式 (1)初始化本地版本库 (2)查看文件的状态 (3)把文件添加到暂存区 (4)把暂存区的内容提交到本地版本库 2.总结本文用到的Git命令 1.Git最基础的使用方式 ...

  9. 『现学现忘』Git基础 — 20、Git中忽略文件补充

    目录 1.忽略文件常遇到的问题 2.忽略文件配置优先级 3.忽略已跟踪文件的改动(本机使用) 4.autocrlf和safecrlf参数说明 (1)提出问题 (2)autocrlf说明 (3)safe ...

随机推荐

  1. 项目操作案例丨西门子PLC通过网关连接ACS800变频器

    本案例控制对象为炉条机.以及蒸汽的控制以及现场数据参数的显示以及报警. PLC 选用西门子 CPU,通过 ET200 IO 模块控制现场设备并监控数据.变频器采用ABB ACS800变频器,将ABB ...

  2. 从零开始Blazor Server(9)--修改Layout

    目前我们的MainLayout还是默认的,这里我们需要修改为BootstrapBlazor的Layout,并且处理一下菜单. 修改MainLayout BootstrapBlazor已经自带了一个La ...

  3. React重新渲染指南

    前言 老早就想写一篇关于React渲染的文章,这两天看到一篇比较不错英文的文章,翻译一下(主要是谷歌翻译,手动狗头),文章底部会附上原文链接. 介绍 React 重新渲染的综合指南.该指南解释了什么是 ...

  4. Mybatis 插件使用及源码分析

    Mybatis 插件 Mybatis插件主要是通过JDK动态代理实现的,插件可以针对接口中的方法进行代理增强,在Mybatis中比较重要的接口如下: Executor :sql执行器,包含多个实现类, ...

  5. 牛客CSP-S模拟题——十二桥问题

    题面 n <= 50000,m <= 200000,k <= 12 题解 可以从K条边的两端和1结点出发各进行一次O(nlogn)的Dijk,然后就浓缩成了一个最多只有25个点的小完 ...

  6. Think PHP 完整的带富文本格式以及图片上传,并且在页面上分页展示

    Think php6.0官网网址:序言 · ThinkPHP6.0完全开发手册 · 看云 (kancloud.cn) 下面是基础配置 第一步:创建TP框架,命名为tp composer create- ...

  7. IdentityServer4登录后无法跳转设置策略

    在中间件中手动改变samesite属性为lax就可以解决问题: services.Configure<CookiePolicyOptions>(options => { option ...

  8. 第十四章 二进制部署k8s集群的平滑升级

    1.软件包下载 去github上下载较新的Kubernetes软件包https://github.com/ 2.升级说明 升级包括master节点升级和node节点的升级,本章升级至v1.15.12: ...

  9. KingbaseES Query Mapping 查询映射功能

    有过SQL优化经历的人都知道,对于有些SQL性能问题,可能需要涉及到SQL层面的修改,这不仅麻烦,而且在已上线的系统还存在很大的风险.KingbaseES V8R6 提供了query mapping功 ...

  10. docker-compose总结

    docker-compose.yml 样例: 各个标签的含义在注释里 version: '3' # 选择的docker-compose 版本 services: # 要编排的一组服务 fim-mysq ...