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.rhkb.cn/news/327676.html

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

相关文章

知识图谱 | 语义网络写入图形数据库(含jdk和neo4j的安装过程)

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本文主要介绍如何使用 Neo4j 图数据库呈现语义网络&#xff0c;并通过 Python 将语义网络的数据写入数据库。具体步骤包括识别知识中的节点和关系&#xff0c;将其转化为图数据库的节点和边&#xff0c;最后通过代码实现数据的写…

css 步骤条虚线渐变色效果实现

效果如图所示&#xff1a; 思路&#xff1a; 使用元素覆盖的方式实现视觉上虚线的效果 实现代码&#xff1a; html布局 <ul class"details-cont"><li class"details-li" v-for"item in 3" :key"item"><div class&qu…

vue + element-plus 开发中遇到的问题

1.问题之路由守卫 初写路由守卫&#xff0c;对于next()的理解不是很透彻&#xff0c;就想着都放行&#xff0c;不然看不到效果&#xff0c;结果控制台出现了警告&#xff0c;想着报黄的问题就不是问题&#xff0c;但仔细一看发现他说&#xff0c;如果再生产阶段就会失败&#x…

程控水冷阻性负载主要工作方式

程控水冷阻性负载是一种先进的电力设备&#xff0c;主要用于电力系统的测试和研究。它的主要工作方式是通过控制水冷系统的温度&#xff0c;来模拟不同的阻性负载条件&#xff0c;从而对电力设备进行各种性能测试。 首先&#xff0c;我们需要了解什么是阻性负载。阻性负载是指那…

DigitalOcean 的PostgreSQL、MySQL、Redis、Kafka托管数据库,现已支持自定义指标收集功能

近期&#xff0c;我们的几个托管数据库&#xff08;PostgreSQL、MySQL、Redis和Kafka&#xff09;引入了自定义数据指标功能&#xff08;scrapable metrics&#xff09;。这些指标使您更具体、更细致地了解数据库的性能&#xff0c;包括延迟、资源利用率和错误率。然后&#xf…

【LLM第五篇】名词解释:prompt

1.是什么 提示工程&#xff08;Prompt Engineering&#xff09;是一门较新的学科&#xff0c;关注提示词开发和优化&#xff0c;帮助用户将大语言模型&#xff08;Large Language Model, LLM&#xff09;用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解…

Go微服务: Gin框架搭建网关, 接入熔断器,链路追踪以及服务端接入限流和链路追踪

概述 本文使用最简单和快速的方式基于Gin框架搭建一个微服务的网关调用微服务的场景网关作为客户端基于RPC调用某一服务端的服务并接入熔断和限流以及链路追踪具体场景&#xff1a;通过网关API查询购物车里的数据在最后&#xff0c;会贴上网关和购物车服务的代码仓库 服务端搭…

HTML常用标签-布局相关标签

布局标签 div标签 俗称"块",主要用于划分页面结构,做页面布局 自己独占一行的元素&#xff0c;设置宽高生效 span标签 俗称"层",主要用于划分元素范围,配合CSS做页面元素样式的修饰 不会自己独占一行的元素&#xff0c;设置宽高不生效 代码 <div style&…

【HR】阿里三板斧--20240514

参考https://blog.csdn.net/haydenwang8287/article/details/113541512 头部三板斧 战略能不能落地、文化能不能得到传承、人才能不能得到保障。 头部三板斧适用的核心场景有三个&#xff1a;一是战略不靠谱&#xff1b;二是组织效率低、不聚心&#xff1b;三是人才跟不上。对…

二、服务器配置修改

二、服务器配置修改 1 防火墙相关配置 systemctl status firewalld systemctl enable firewalld systemctl start firewalld firewall-cmd --reload firewall-cmd --list-all# 开启端口 firewall-cmd --zonepublic --add-port6030-6060/tcp --permanent firewall-cmd --zonep…

如何将公众号添加到CSDN个人主页

1. 创作中心- 推广管理 输入个人公众号名字并开启微信公众号推广 2. 将公众号的二维码图片加入拓展信息 个人主页的左下角就能看到推广 如果希望能看到是二维码 操作如下&#xff1a; 写篇文章贴上二维码 然后点击鼠标右键获得此页面链接 &#xff0c;例如我的个人公众号 htt…

定时器的理论和使用

文章目录 一、定时器理论1.1定时器创建和使用 二、定时器实践2.1周期触发定时器2.2按键消抖 一、定时器理论 定时器是一种允许在特定时间间隔后或在将来的某个时间点调用回调函数的机制。对于需要周期性任务或延迟执行任务的嵌入式应用程序特别有用。 软件定时器&#xff1a; …

【C++语言】动态内存管理

文章目录 前言内存管理数据存储位置C语言动态内存管理方式C动态内存管理方式&#xff1a;new/deleteoperator new与operator delete函数new和delete的实现原理定位new表达式&#xff08;了解&#xff09;常见面试题 总结C语言系列学习目录 前言 本章要介绍的是动态内存管理&am…

ORACLE ODA一体机存储节点电源故障的分析处理

近期&#xff0c;某用户的ORACLE ODA一体机在例行机房巡检时出现亮黄灯告警&#xff1b;用户反馈次问题后我们立刻通过远程方式&#xff0c;登陆ODA的控制台进行查看&#xff1b; 对于ODA一体机&#xff08;2个计算节点1个存储节点&#xff09;&#xff0c;计算节点可以通过il…

nginx 发布静态资源

一. nginx 发布静态资源 在nginx中nginx.conf配置文件中添加内容如下&#xff1a; server {listen 90;server_name localhost;# 配置静态资源文件&#xff0c;就可以访问了location / {root /home/fooie-shop;index index.html;}# 配置音频和图片资源location /imoo…

深入了解 npm:Node.js 包管理工具详解

文章目录 一、npm 基本概念1.1 什么是 npm&#xff1f;1.2 package.json 文件 二、npm 常用命令2.1 初始化项目2.2 安装依赖2.2.1 安装单个包2.2.2 全局安装包2.2.3 安装开发依赖 2.3 移除依赖2.4 更新依赖2.5 查看已安装的包2.6 发布包 三、npm 高级用法3.1 使用 npm scripts3…

数据结构之二叉树详解[1]

在前面我们介绍了堆和二叉树的基本概念后&#xff0c;本篇文章将带领大家深入学习链式二叉树。 1.预备知识 2.二叉树结点的创建 3.二叉树的遍历 3.1前序遍历 3.2中序遍历 3.3 后序遍历 4.统计二叉树的结点个数 5.二叉树叶子结点的个数 6.二叉树第k层的结点个数 7.总结 …

589.N叉树的前序遍历

刷算法题&#xff1a; 第一遍&#xff1a;1.看5分钟&#xff0c;没思路看题解 2.通过题解改进自己的解法&#xff0c;并且要写每行的注释以及自己的思路。 3.思考自己做到了题解的哪一步&#xff0c;下次怎么才能做对(总结方法) 4.整理到自己的自媒体平台。 5.再刷重复的类…

高级个人主页

高级个人主页 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1, use…

数据驱动测试在接口测试和网站测试中的应用

什么是数据驱动测试 据驱动测试是一种测试方法&#xff0c;其中测试数据和测试逻辑是分开的&#xff0c;测试数据被存储在外部源中&#xff08;如Excel表格、JSON文件、数据库等&#xff09;&#xff0c;测试逻辑则独立于测试数据。在测试过程中&#xff0c;测试数据被读取并传…