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,但还有新功能要开发)
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

海豚调度器如何看工作流是在哪个worker节点执行

用海豚调度器&#xff0c;执行一个工作流时&#xff0c;有时成功&#xff0c;有时失败&#xff0c;怀疑跟worker节点环境配置不一样有关。要怎样看是在哪个worker节点执行&#xff0c;在 海豚调度器 Web UI 中&#xff0c;您可以查看任务实例&#xff0c;里面有一列显示host&a…

从零开始详解OpenCV条形码区域分割

前言 在识别二维码之前&#xff0c;首先要划分出二维码的区域&#xff0c;在本篇文章中将从零开始实现二维码分割的功能&#xff0c;并详细介绍用到的方法。 我们需要处理的图像如下&#xff1a; 完整代码 首先我们先放出完整代码&#xff0c;然后根据整个分割流程介绍用到…

windows 使用 workerman

简单示例 workerman从3.5.3版本开始已经能够同时支持linux系统和windows系统。 1、需要PHP>5.4&#xff0c;并配置好PHP的环境变量。 2、Windows版本的Workerman不依赖任何扩展。 3、安装使用以及使用限制这里。 4、由于Workerman在Windows下有诸多使用限制&#xff0c…

【万字面试题】Redis

文章目录 常见面试题布隆过滤器原理和数据结构&#xff1a;特点和应用场景&#xff1a;缺点和注意事项&#xff1a;在python中使用布隆过滤器 三种数据删除策略LRU (Least Recently Used)工作原理&#xff1a;应用场景&#xff1a; LFU (Least Frequently Used)工作原理&#x…

vs2019 c++中模板 enable_if_t 的使用

&#xff08;1&#xff09; 该模板的定义如下&#xff1a; template <bool _Test, class _Ty void> struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty> struct enable_if<true, _Ty> { // type is _Ty for _Testusing …

OSEK应用模式

1 前言 应用模式&#xff08;Application modes)用于区分不同的场景&#xff0c;以便在系统运行时&#xff0c;组织各自相互独立的OS相关的资源集合&#xff0c;是一种分而治之的思想体现。不同的应用模式是互斥的&#xff0c;即系统当前必须在一种应用模式&#xff08;且只能在…

OV SSL证书的特点

OV SSL证书&#xff0c;全称为Organization Validation SSL Certificate&#xff08;组织验证型SSL证书&#xff09;&#xff0c;是一种中级的SSL证书类型。与仅验证域名所有权的DV&#xff08;Domain Validation&#xff09;证书不同&#xff0c;OV证书在颁发前会执行更加严格…

01.认识HTML及常用标签

目录 URL&#xff08;统一资源定位系统&#xff09; HTML&#xff08;超文本标记语言&#xff09; 1&#xff09;html标签 2&#xff09;head标签 3&#xff09;title标签 4&#xff09;body标签 标签的分类 DTD文档声明 基础标签 1&#xff09;H系列标签 2&#xff09…

C++基础与深度解析 | 语句 | 分支语句 | 循环语句 | 达夫设备

文章目录 一、语句基础二、分支语句1.分支语句--if2.分支语句--switch 三、循环语句1.循环语句--while2.循环语句--do-while3.循环语句--for4.循环语句--基于范围的for循环5.break / continue语句四、语句的综合应用--达夫设备 一、语句基础 语句的常见类别&#xff1a; 表达…

如何在 Ubuntu 12.10 上使用 Python 创建 Nagios 插件

介绍 Python 是一种在 Linux 上默认可用的流行命令处理器。 我们之前已经介绍过如何在 Ubuntu 12.10 x64 上安装 Nagios 监控服务器。 这一次&#xff0c;我们将扩展这个想法&#xff0c;使用 Python 创建 Nagios 插件。 这些插件将在客户 VPS 上运行&#xff0c;并通过 NR…

树莓派|角速度和加速度传感器

角速度传感器和加速度传感器是常见的惯性传感器&#xff0c;常用于测量物体的旋转和线性运动。 角速度传感器&#xff08;Gyroscope&#xff09;用于测量物体绕三个轴&#xff08;X、Y、Z&#xff09;的旋转速度或角速度。它可以提供关于物体在空间中的旋转方向和角度变化的信…

数据结构学习/复习14--归并排序的递归与循环实现/计数排序

一、归并排序 1.递归实现 注意事项&#xff1a;即使排序的数字个数不为2的倍数也可正常分解&#xff0c;其思想没有规定一定要左右数目对称才可合并 注意事项&#xff1a;归并的思想还适用于外排序 2.递归改循环 注意事项&#xff1a;边界处理与非2的n次方倍的处理 版本1&…

win10下,svn上传.so文件失败

问题&#xff1a;win10下使用TortoiseSVN&#xff0c;svn上传.so文件失败 解决&#xff1a;右键&#xff0c;选择Settings&#xff0c;Global ignore pattern中删除*.so&#xff0c;保存即可。

网络3--网络通信的深度理解(端口号)

网络通信的进一步理解 两个主机间进行通信&#xff0c;其实是两个主机间的软件进行通信&#xff0c;软件也就是可执行程序&#xff0c;运行时就是进程&#xff0c;所以也为进程间通信。 进程间通信需要共享资源&#xff0c;这里两个主机间的共享资源是网络&#xff0c;利用的是…

指针(4)

1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* ; 一般使用: int main() {char i a;char* p &i;*p q;printf("%c", i);return 0; } 然后我们看这个例子,这是把⼀个字符串放到pstr指针变量里了吗&#xff1f; 事实上不是,他只是将…

如何管理多个版本的Node.js

我们如何在本地管理多个版本的Node.js&#xff0c;有没有那种不需要重新安装软件再修改配置文件和环境变量的方法&#xff1f;经过我的查找&#xff0c;还真有这种方式&#xff0c;那就是nvm&#xff08;Node Version Manager&#xff09;。 下面我就给大家介绍下NVM的使用 1…

笔记本黑屏,重新开机主板没有正常运作的解决办法

拆开笔记本后壳&#xff0c;打开看到主板&#xff0c;将主板上的这颗纽扣电池拆下来&#xff0c;如果是带连接线的&#xff08;如下图&#xff09;&#xff0c;可以将接口处线头拔出&#xff0c;等1分钟再把线接上。 ------------- 以下是科普 首先&#xff0c;电脑主板上的这…

Llama-Factory + Ollama 打造属于自己的中文版 Llama3

Meta 推出 Llama3 也有一小段时间了。Llama3 包含 8B 和 70B 两种参数规模&#xff0c;涵盖预训练和指令调优的变体。Llama 3 支持多种商业和研究用途&#xff0c;并已在多个行业标准测试中展示了其卓越的性能&#xff08;关于Llama3的具体介绍可以参考本站另外一篇博文&#x…

详解xlsxwriter 操作Excel的常用API

我们知道可以通过pandas 对excel 中的数据进行处理分析&#xff0c;但是pandas本身对格式化数据方面提供了很少的支持&#xff0c;如果我们想对pandas进行数据分析后的数据进行格式化相关操作&#xff0c;我们可以使用xlsxwriter&#xff0c;本文就对xlsxwriter的常见excel格式…

Java聚合项目打包运行笔记

聚合项目创建 略 聚合项目打包配置 父工程 pom文件添加 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>…