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

Git入门 -- 分支

Git入门 – 分支

1.分支理解

1.1 主分支

在初始化一个Git项目后,默认只有一个分支(master)。主分支表示项目的稳定版本,其中应该包含无Bug的稳定代码,并且保持随时可以发布的状态。

1.2 功能分支

当项目需要开发新的功能时,应该创建一个新的功能分支。创建分支时,新分支默认指向的代码提交版本为当前分支所指向的代码提交版本。

1.3 关系

分支保证开发者可以在主线(master)之外进行开发工作,并且不影响主线代码。因为主线和分支是两个独立的代码线,这样,你可以在一个分支上尝试新功能、修复bug或进行其他任何类型的开发,而不必担心破坏主线的稳定性。

2.创建分支

2.1 创建主分支

对于个人项目来说 一个主分支就够用,在每次提交时创建一个commit节点

$ git commit -m "节点名"

2.2 创建功能分支

项目有新的功能需要开发时,应该先创建功能分支,并切换到该分支

$ git checkout -b [分支名]

3.合并

3.1 介绍

git merge一共有三种模式 git merge --ff, git merge --no-ff, git merge --ff-only

  • –ff自动合并:当合并的分支为当前分支的后代,会自动执行–ff,若不匹配则执行–no-ff合并。
  • –no-ff非Fast-forward模式:在任何情况下都会创建新的commit多方合并(即使被合并的分支为自己的直接后代)。
  • –ff-only:只会按照 Fast-forward 模式进行合并,如果不符合条件(并非当前分支的直接后代),则会拒绝合并请求并且退出。

3.2 快速合并

当前分支开发完成后需要合并到主分支,通过提交命令直接向主分支提交代码

$ git checkout master #切换至主分支
$ git merge [分支] #将开发的分支合并到主分支

3.3 非快速合并

在进行非快速合并时,需要创建commit节点

$ git merge --no-ff [分支名]

4.Git冲突解决

4.1 冲突发生

当同一个文件被两个分支修改过,在合并这两个分支时就会发生冲突。

4.2 冲突修正

  • 将两个分支文件进行对比修改,满足两个分支的提交。
  • 使用 git addgit commit进行提交(此时提交的是master分支)。
  • 再次合并

5. BUG分支

5.1 描述

开发者在某个分支上工作,突然有一个紧急BUG需要修复,此时需要使用stash功能,先将当前正在工作的现场存储起来,等BUG修复后再继续工作。

5.2 操作流程

  • 存储工作现场
git stash
  • 切换至BUG分支
git checkout [出现bug的分支]
  • 添加一个BUG临时分支
git checkout -b bug01
  • 修复完成后切换回主分支
git checkout master
  • 合并BUG分支到主分支
git merge --no-ff -m '分支合并' bug01
  • 返回之前工作现场
git checkout dev
  • 查看当前分支保存那些工作现场(之前封冻存储的工作现场)
git stash list
  • 恢复存储现场
git stash pop

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于人工智能、三维视觉、混合现实等技术的智慧能源开源了
  • 使用SSMS连接和查询 SQL Server 实例
  • 基于深度学习的环境感知系统
  • 设计模式-结构型模式(第五章)
  • 【C++】01背包问题暴力,记忆,动态规划解法
  • 算法笔记|Day26贪心算法IV
  • [C#]将opencvsharp的Mat对象转成onnxruntime的inputtensor的3种方法
  • 【python报错】‘XXX‘ object is not callable
  • 性能基础之硬盘性能知识必知必会
  • 电容电阻电感关于封装的选型
  • 每天一个数据分析题(四百九十三)- 主成分分析与因子分析
  • C++ STL find 用法
  • Linux 部署YUM仓库及NFS共享服务
  • spring低版本设置cookie的samesite属性
  • roles
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • express.js的介绍及使用
  • HTTP 简介
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript-Array类型
  • SpiderData 2019年2月23日 DApp数据排行榜
  • uni-app项目数字滚动
  • 数据仓库的几种建模方法
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 想写好前端,先练好内功
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • #《AI中文版》V3 第 1 章 概述
  • #ifdef 的技巧用法
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (11)MSP430F5529 定时器B
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (超详细)语音信号处理之特征提取
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (九)信息融合方式简介
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (四)JPA - JQPL 实现增删改查
  • (四)库存超卖案例实战——优化redis分布式锁
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (学习日记)2024.01.19
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • ***测试-HTTP方法
  • **PHP二维数组遍历时同时赋值
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET HttpWebRequest、WebClient、HttpClient