当前位置: 首页 > news >正文

【Git】P2 分支(创建分支,合并分支,分支冲突,分支分类)

分支

  • 分支的概念
    • 2077 与 分支
    • git - 分支
  • 分支语句
    • 查看与创建分支
    • 切换与删除分支
    • 合并分支
  • 分支冲突
  • 分支分类


分支的概念

什么是分支?

2077 与 分支

我最喜欢的游戏就是 赛博朋克2077,美国末日 和 GTA,下图是2077的存档。

在这里插入图片描述

存档非常多的原因是因为不同的选择会最后有不同的结果,但是又不想每次从头开始,所以就在产生选择的地方建立 “分支”,可以自由选择分支玩耍。

如同下图一样,黄色就是选择男性角色,蓝色就是选择女性角色…
在这里插入图片描述
而黄色,蓝色,绿色这都称为分支,branch。


git - 分支

在 Git 中,分支的作用含义相同,可以通过建立分支从主线上进行分离,然后对 bug 进行修改,修改后可以覆盖主线;也可以分离后彻底自由,走一条不一样的路…

e.g.e.g.e.g.

比如我这里有三个分支:

在这里插入图片描述

然后我修改文件,从 dev01 分支进行提交:

在这里插入图片描述

查看log

在这里插入图片描述

发现只有 dev01 提交了,切换到 master 发现文件内容与 dev01 分支下内容不同。

这个就是分支的概念,其实如果想彻底理解分支概念,强烈建议自行尝试…



分支语句

查看与创建分支

查看分支

git branch

创建分支

git branch 分支名

在这里插入图片描述


切换与删除分支

切换到已有分支

切换分支就像我们一打开2077时选择存档一样…

git checkout dev01
# 切换到 dev01 分支

在这里插入图片描述

创建并且切换到分支

git checkout -b 分支名

删除分支

git branch -d 分支名

强制删除分支

git branch -D 分支名

合并分支

合并分支

一般我们的开发都是开发一个独立的分支修改代码,写完后合并到 master 上;

第一步:切换到 master

git checkout master

第二步:合并到 master

git merge dev01
# 将 dev01 所有的修改合并到 master 上

合并后,master 分支上既有 master 自己添加的内容,也包含 dev01 新添加的内容;

在这里插入图片描述


分支冲突

其实在阅读 合并分支 时,读者就应该产生一个疑问:如果我们在master上修改了一个文件,在dev01分支上也修改了这个文件,那么合并是如何合并的??

假如我们在 master 上修改 test.txt 文件内容;同时在 dev01 分支上同样修改 test.txt 文件内容,然后都进行提交;并回到 master,进行合并操作:

在这里插入图片描述

爆出错误: 产生冲突 Merge conflict,自动合并失败,需要人工介入;

解决办法: 打开 test.txt,人工介入:

在这里插入图片描述

其中 <<<<<<< HEAD 意思为当前 master 分支中 test.txt 内容 ;>>>>>>> dev01 意思是 dev01 分支中 test.txt 内容;

手动更改 test.txt 中冲突内容,然后 add commit

在这里插入图片描述



分支分类

一般企业中将分支分为几类:

master 主分支
release 版本
hotfix bug 修复
develop 新功能合并
feature 新功能开发

有几种应用场景:

  1. 产品运行出现 bug,但是服务器不能停,我们建立一个分支 hotfix,修改 bug 测试解决问题后合并到 master,合并后可以删除 hotfix;
  2. 产品新开发功能,每个功能开发在分支 feature 中,个人开发测试完成后合并到 develop 分支,需要线上部署时,从 develop 分支部署到 master 分支中;
  3. bug 不着急解决,那么 hotfix 解决问题后合并到 develop 分支,随着下一次的线上部署,部署到 master分支;
  4. 不断 release 标记每次上线节点;
  5. feature 分支建立多少直接按照功能开发分给多少员工,每个员工一个分支,负责一项功能;

http://www.lryc.cn/news/32671.html

相关文章:

  • 2023年全国最新交安安全员精选真题及答案14
  • Air101|Air103|Air105|Air780E|ESP32C3|ESP32S3|Air32F103开发板:概述及PinOut
  • 【代码随想录训练营】【Day35】第八章|贪心算法|860.柠檬水找零|406.根据身高重建队列|452. 用最少数量的箭引爆气球
  • 嵌入式C基础知识(23)
  • 一文掌握组织项目等级划分维度,标准和实例
  • 【C++】list的使用和基本迭代器框架的实现 vs和g++下string结构的说明
  • 基于深度学习的轴承寿命预测实践,开发CNN、融合LSTM/GRU/ATTENTION
  • redis进阶:mysql,redis双写一致性,数据库更新后再删除缓存就够了吗?
  • RTOS中互斥量的原理以及应用
  • 数据分析:基于随机森林(RFC)对酒店预订分析预测
  • 【python】序列(列表、元组)、字典、集合的初步认识
  • 周赛335(模拟、质因子分解、分组背包)
  • 【极致简洁】Python tkinter 实现下载工具,你想要的一键获取
  • npm i 安装报错
  • 原腾讯QQ空间负责人,T13专家,黄希彤被爆近期被裁员,裁员原因令人唏嘘。。...
  • 【C++】BloomFilter——布隆过滤器
  • 【Spring】资源操作管理:Resource、ResourceLoader、ResourceLoaderAware;
  • 【System Verilog基础】automatic自动存储--用堆栈区存储局部变量
  • 看板组件:Bryntum Task Board JS 5.3.0 Crack
  • 45 个 Git 经典操作场景,专治不会合代码
  • MyBatis之动态SQL
  • SpringBoot(Tedu)—DAY01——环境搭建
  • 代理模式-大话设计模式
  • STM32定时器的编码器接口模式
  • Java方法的使用
  • Linux命令·nl
  • 排序模型:DIN、DINE、DSIN
  • 【C++】Clang-Format:代码自动格式化(看这一篇就够了)
  • Linux命令·more
  • 为什么 SaaS 公司依靠知识库来做对客户服务?