Git 基础使用(2) 分支管理

文章目录

  • 分支概念
  • 分支使用
    • 查看分支
    • 分支创建
    • 分支切换
    • 分支合并
    • 合并冲突
    • 分支删除
  • 分支管理
    • 快进模式
    • 分支策略
    • 内容保存
    • 错误处理

分支概念

(1)分支概念
Git分支是指在版本控制系统Git中,用来表示项目的不同工作流程或开发路径的一个重要概念。通过创建分支,可以在不影响主线代码的情况下进行独立的工作或实验。在Git中,每个项目都有一个默认的主分支,通常称为master或main分支。除了主分支外,用户可以根据需要创建任意数量的其他分支。这些分支可以基于主分支创建,也可以基于其他分支创建。分支的主要作用是允许团队成员在不互相干扰的情况下并行开发不同的功能或修复bug。每个分支都是独立的代码空间,允许开发人员自由地提交、合并和回滚更改,而不会影响其他分支或主线代码。

在这里插入图片描述
(二) HEAD 含义:

Git 基础使用(1)中提到,HEAD是.git文件夹中的一个重要文件。
Git 中的 HEAD 是一个指针,指向当前所在的本地分支上最近一次提交的版本。它可以理解为当前工作目录的快照,是我们在代码库中进行操作时的参照点。HEAD:默认指向 master 分⽀。

HEAD作用:

①标识当前位置:HEAD 指示了当前所在的分支以及在该分支上的最新提交。

②切换分支:当我们切换分支时,HEAD 会随之移动到所切换到的分支上,指向该分支上的最新提交

分支使用

查看分支

# 查看所有本地分支,
# 并在当前分支旁边标记一个星号(*)表示当前所在的分支
#  即HEAD指向的分支
git branch 

在这里插入图片描述

分支创建

git branch new_branch_name

分支切换

 git checkout target_branch_name

在这里插入图片描述

分支合并

因为创建、合并和删除分⽀⾮常快,所以Git⿎励你使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全

# 首先需要切换到 master 分支
git checkout <target-branch>
# 把 source-branch 分支的更改合并到当前所在的 target-branch 分支上git merge <source-branch>

合并冲突

<<<<<<< HEAD
// 本地分支的修改内容
=======
// 要合并的分支的修改内容
>>>>>> branch-name// 在通过文本编辑的方式手动解决冲突之后,需要再次commit

在实际分⽀合并的时候,并不是想合并就能合并成功的,有时候可能会遇到代码冲突的问题。
举例:
在这里插入图片描述
在这里插入图片描述

分支删除

分支与主分支合并完成后, 该分⽀对于我们来说就没⽤了, 那么dev分⽀就可以被删除掉。注意,如果当前正处于某分⽀下,就不能删除当前分⽀。

// 删除指定分支
// 这个指令会删除指定的分支,前提是该分支已完全合并到当前分支中
git branch -d <branch_name>
//这会强制删除指定分支,即使它包含未合并的更改。
git branch -D <branch_name>

分支管理

快进模式

快进模式(Fast-forward mode)是Git中一种合并分支的方式。当您尝试将一个分支合并到当前分支时,如果当前分支的指针可以直接移动到要合并的分支的最新提交,而不需要创建新的合并提交,Git就会执行快进合并。(发升合并冲突后,手动修改并再次commite就不是Fast-forward mode模式)

在快进模式下,Git会简单地将当前分支指针直接指向要合并的分支的最新提交,从而使得提交历史保持线性。这种合并方式通常发生在没有分支间的提交冲突时,可以帮助保持项目的提交历史整洁和易于理解。

但在在这种 Fast forward 模式下,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息,看不出来最新提交到底是 merge 进来的还是正常提交的。 Git ⽀持我们强制禁⽤ Fast forward 模式,那么就会在 merge 时⽣成⼀个新的 commit ,这样,从分⽀历史上就可以看出分⽀信息。

# 合并分支时禁用快进模式
# 即使是简单的合并操作也会生成一个合并提交,以保留合并的信息。
git merge --no-ff <branch-name>
# 提交
git commite -m
# 查看提交日志
git log 

分支策略

常见分支策略如下:

主分支(Master/Main):主分支通常用于存储稳定的、可部署的代码。开发团队应该保持主分支的代码始终是可用和可部署的状态。

开发分支(Develop):开发分支是用于整合各个功能特性的地方。团队成员在各自的特性分支上完成开发后,将其合并到开发分支进行集成测试。

特性分支(Feature Branches):每个新功能或任务应该在单独的特性分支上进行开发。一旦特性完成并通过测试,可以将其合并回开发分支。

发布分支(Release Branches):发布分支用于准备发布新版本。在发布分支上进行最终测试、Bug修复和版本号更新等操作。

修复分支(Hotfix Branches):用于紧急修复生产环境中的Bug的分支。修复完成后,应该将其合并回主分支和开发分支。

内容保存

# git stash 会先存储当前工作区发生的更改,再将将当前工作区发生的更改清除
# 在Git的"堆栈"中,存储当前工作区的内容
git stash# 用于显示存储的变更列表,运行这个命令后,
# Git会列出所有已经存储的变更以及它们的引用ID
git stash list#  git stash list 结果
#  ID(stash@{n})
stash@{0}: WIP on <branch_name>: <commit_message>
stash@{1}: On <branch_name>: <commit_message># 它会将最近一次存储的变更应用到当前工作目录中,但并不会从堆栈中移除这个存储项。
git stash apply
# 它会将最近一次存储的变更应用到当前工作目录中,并从堆栈中移除这个存储项。
git stash pop
# 如果你想应用存储的变更并且删除所有存储项
git stash apply stash@{n}

错误处理

(当master分支出现bug,但还有新功能要开发)
在这里插入图片描述

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

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

相关文章

【cmake】Windows 环境下编译第三方依赖源码(以编译Xerces库为例)

第三方依赖源码的编译分为两种&#xff0c;一种是使用 Configure 脚本编译&#xff0c;另一种是使用 CMakeLists.txt 编译。Xerces 3.2.3 的编译方式是 CMakeLists.txt 脚本编译。 必要软件&#xff1a; CMake &#xff08;CMake | Download&#xff09;Visual Studio 2019&a…

【数据结构】二叉树(Binary Tree)

文章目录 一、树的概念及结构二、二叉树的概念及结构1.二叉树的概念2.特殊的二叉树3.二叉树的性质 三、二叉树的存储顺序存储链式存储 四、二叉树的实现1.创建二叉树2.二叉树的遍历前序遍历中序遍历后序遍历层序遍历根据遍历顺序创建二叉树 3.二叉树的基本操作1.总结点个数2.二…

ctfshow之_萌新web9至web10

一、访问在线靶场ctfshow 1、web9 如下图所示&#xff0c;进入_萌新赛的web9问题&#xff0c;题目提醒flag在config.php中&#xff1a; 如上图所示&#xff0c;可以get传参&#xff0c;且传入的参数需要正则匹配system、exec、highlight&#xff0c;且不区分大小写&#xff0…

C++设计模式|创建型 5.原型模式

1.什么是原型模式&#xff1f; 原型模式⼀种创建型设计模式&#xff0c;该模式的核⼼思想是基于现有的对象创建新的对象&#xff0c;⽽不是从头开始创建。 在原型模式中&#xff0c;通常有⼀个原型对象&#xff0c;它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状…

Mac IDEA 自动补全mybatis sql语句

导航 Mac IDEA 自动补全mybatis sql语句一、点击IDEA 右侧Database选项二、选择添加对应数据库三、输入数据库信息和方案四、输入数据库信息和方案五、成功 Mac IDEA 自动补全mybatis sql语句 背景&#xff1a; 想在Mapper中&#xff0c;能够实现自动检索数据库表和对应的字段…

web前端之sass中的颜色函数、active按钮激活、hover鼠标悬浮、disabled禁用、scss循环、css

MENU 效果图htmlsassscss编译后的css页面css 效果图 注意查看蓝色按钮。 html <div class"box"><button class"btn type_1">按钮</button><button class"btn type_2">按钮</button><button class"btn ty…

一文读懂通用漏洞评分系统CVSS4.0:顺带理清CVE、CWE及其与CVSS之间的关系

事件响应和安全团队论坛 (FIRST&#xff0c;Forum of Incident Response and Security Teams) 于 2023 年 11 月 1 日正式推出第四版通用漏洞评分系统 (CVSS 4.0&#xff0c;Common Vulnerability Scoring System version 4.0)。CVSS 4.0 是评估计算机系统安全漏洞严重性的行业…

C++ 多态性

一 多态性的分类 编译时的多态 函数重载 运算符重载 运行时的多态 虚函数 1 运算符重载的引入 使用C编写程序时&#xff0c;我们不仅要使用基本数据类型&#xff0c;还要设计新的数据类型-------类类型。 一般情况下&#xff0c;基本数据类型的运算都是运算符来表达&#x…

【C++】详解C++的模板

目录 概念 ​编辑 语法 函数模板 类模板 非类型模板参数 模板的特化 函数模板特化 类模板特化 全特化 偏特化 分离编译 概念 模板是C中非常厉害的设计&#xff0c;模板把通用的逻辑剥离出来&#xff0c;让不同的数据类型可以复用同一种模板的逻辑&#xff0c;甚至可以…

PHP黑魔法之md5绕过

php本身是一种弱语言,这个特性决定了它的两个特点: 输入的参数都是当作字符串处理变量类型不需要声明,大部分时候都是通过函数进行类型转化php中的判断有两种: 松散比较:只需要值相同即可,类型不必相同,不通类型比较会先转化为同类型,比如全数字字符串和数字比较,会比…

凸优化理论学习三|凸优化问题(一)

系列文章目录 凸优化理论学习一|最优化及凸集的基本概念 凸优化理论学习二|凸函数及其相关概念 文章目录 系列文章目录一、优化问题&#xff08;一&#xff09;标准形式的优化问题&#xff08;二&#xff09;可行点和最优点&#xff08;三&#xff09;局部最优点&#xff08;四…

《Python编程从入门到实践》day28

# 昨日知识点回顾 安装Matplotlib 绘制简单的折线图 # 今日知识点学习 15.2.1 修改标签文字和线条粗细 # module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? # 解决办法&#xff1a;matplotlib切换图形界面显示终端TkAgg。 #…

使用Three.js绘制快速而逼真的水

本文将利用GPUComputationRenderer来实现水波纹的绘制&#xff0c;相似的案例可以看threejs官方的GPGPU Water示例。更多精彩内容尽在数字孪生平台。 什么是 GPGPU GPGPU代表通用图形处理单元&#xff08;General-Purpose Graphic Processing Unit&#xff09;&#xff0c;意思…

1146 -Table ‘performance schema.session variables‘ doesn‘t exist的错误解决

一、问题出现 今天在本地连数据库的时候&#xff0c;发现这个问题&#xff0c;哎呦我擦&#xff0c;差点吓死了 二、解决办法 1&#xff09;找文件 用everything搜一下MySQL Server 5.7 然后去Windows服务找一下MySQL配置文件的具体路径 如果知道那最好&#xff0c;不知道那…

宝塔8.1.0去除绑定用户

非要绑定手机号&#xff0c;确实很烦 1&#xff0c;/www/server/panel/BTPanel __init__.py if not public.is_bind():return redirect(/bind, 302) 将is_bind的路由全部注释 2&#xff0c;/www/server/panel/class下 panelPlugin.py 注释异常&#xff0c; 新增 softLis…

SSL协议

SSL 安全传输协议&#xff08;安全套接层&#xff09; 也叫TLS ---- 传输层安全协议 SSL的工作原理&#xff1a;SSL协议因为是基于TCP协议工作的&#xff0c;通信双方需要先建立TCP会话。因为SSL协议需要进行安全保证&#xff0c;需要协商安全参数&#xff0c;所以也需要建立…

springboot房屋租赁系统

摘要 房屋租赁系统&#xff1b;为用户提供了一个房屋租赁系统平台&#xff0c;方便管理员查看及维护&#xff0c;并且可以通过需求进行设备信息内容的编辑及维护等&#xff1b;对于用户而言&#xff0c;可以随时进行查看房屋信息和合同信息&#xff0c;并且可以进行报修、评价…

清理缓存简单功能实现

在程序开发中&#xff0c;经常会用到缓存&#xff0c;最常用的后端缓存技术有Redis、MongoDB、Memcache等。 而有时候我们希望能够手动清理缓存&#xff0c;点一下按钮就把当前Redis的缓存和前端缓存都清空。 功能非常简单&#xff0c;创建一个控制器类CacheController&#xf…

【计算机毕业设计】基于SSM+Vue的线上旅行信息管理系统【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 设计原则 1.3 论文组织结构 2 系统关键技术 2.1JSP技术 2.2 JAVA技术 2.3 B/S结构 2.4 MYSQL数据库 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3 经济可行性 3.1.4 法律可行性 3.2系统功能分析 3.2.1管理员功能分析 3.2.…

JavaScript精粹(一)

JavaScript&#xff08;简称为JS&#xff09;是一种广泛应用于网页开发的脚本语言&#xff0c;具有以下几个主要作用&#xff1a; 网页交互&#xff1a;JavaScript 可以用于创建动态的网页效果&#xff0c;例如响应用户的操作&#xff0c;实现页面内容的动态更新&#xff0c;以…