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

Git分支结构

目录

1. 线性分支结构

2. 分叉与合并结构

3. 分支与标签的关系

4. 并行开发与分支管理策略

测试(本机系统为Rocky_linux9.4)

合并失败解决

删除分支

 删除本地分支

删除远程分支


Git 中的分支结构是版本控制中非常重要的概念之一,它描述了项目中不同提交的组织方式和分支之间的关系。以下是Git 分支结构及其解释:

1. 线性分支结构

  • 最简单的分支结构是线性的,每次提交都是在前一次提交的基础上进行的。这种结构没有分叉或合并,所有的提交都在同一个主线上。
A --- B --- C --- D  (master)
  • 上面的示例中,ABCD 表示不同的提交,master 分支顺序地指向每个新的提交。

2. 分叉与合并结构

  • 在实际项目中,通常会存在多个并行开发的分支,这些分支可以同时在不同的特性或修复上工作,然后将它们合并回主分支或其他分支。
        /--- E --- G (feature1)
A --- B --- C --- D\--- F --- H (feature2)
  •  在上面的示例中,feature1feature2 是从 B 提交分叉出来的分支。EF 是各自分支上的提交,GH 是将特性分支合并回主分支后的提交。

3. 分支与标签的关系

  • 标签(Tag)通常用于标记重要的版本发布点或里程碑,它们可以指向任意的提交,不一定是分支的头部。
A --- B --- C --- D (master, v1.0)\E --- F (v2.0)
  • 在这个示例中,v1.0 标签指向提交 D,表示 v1.0 版本的发布点。而 v2.0 标签指向提交 F,表示 v2.0 版本的发布点。

4. 并行开发与分支管理策略

       在团队协作中,良好的分支管理策略可以有效地管理并行开发和版本控制。常见的策略包括使用主分支(如 master)作为稳定版本的发布线,使用特性分支来开发新功能或修复 bug,并通过合并操作将它们整合回主分支。

测试(本机系统为Rocky_linux9.4)

分支切换

[root@tty02 tty]# git branch newrain    #创建一个分支
[root@tty02 tty]# git branch
* (HEAD detached at ugo)masternewrain
[root@tty02 tty]# git checkout newrain  #切换到这个分支
Switched to branch 'newrain'
[root@tty02 tty]# git branchmaster
* newrain

 在newrain分支进行修改

[root@tty02 tty]# ll
total 0
-rw-r--r-- 1 root root 0 Jul  9 22:37 tty
[root@tty02 tty]# echo "1901" >> tty
[root@tty02 tty]# cat tty
1901
[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m '1901']
[newrain 96638c2] 1901]1 file changed, 1 insertion(+)
[root@tty02 tty]# git status
On branch newrain
nothing to commit, working tree clean#此时位于分支 newrain 无文件要提交,干净的工作区

回到master分支

[root@tty02 tty]# git checkout master
Switched to branch 'master'
Your branch is based on 'origin/master', but the upstream is gone.(use "git branch --unset-upstream" to fixup)
[root@tty02 tty]# git branch
* masternewrain
[root@tty02 tty]# ll
total 0
-rw-r--r-- 1 root root 0 Jul  9 23:39 tty
[root@tty02 tty]# cat tty                       #此时在master分支上看不到内容
[root@tty02 tty]# git log  -1
commit d2470f142c7721ebbff8a3b8f5f7752ecbae67c8 (HEAD -> master, tag: v2.0, tag: v1.0, tag: ugo)
Author: Your Name <you@example.com>
Date:   Tue Jul 9 22:35:17 2024 +0800commit

合并代码

[root@tty02 tty]# git merge newrain    #合并newrain到当前master分支
Updating d2470f1..96638c2
Fast-forwardtty | 1 +1 file changed, 1 insertion(+)[root@tty02 tty]# git status
On branch master
Your branch is based on 'origin/master', but the upstream is gone.(use "git branch --unset-upstream" to fixup)nothing to commit, working tree clean[root@tty02 tty]# cat tty
1901

合并后即可看到内容

合并失败解决

模拟冲突,在文件的同一行做不同修改

在master分支进行修改 

[root@tty02 tty]# cat tty
1901
[root@tty02 tty]# echo '1901-git' > tty
[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m 'newrain 1901-git'
[master d343709] newrain 1901-git1 file changed, 1 insertion(+), 1 deletion(-)

 切换到newrain分支

[root@tty02 tty]# git checkout newrain
Switched to branch 'newrain'[root@tty02 tty]# git branchmaster
* newrain[root@tty02 tty]# cat tty
1901[root@tty02 tty]# echo 'newrain' >> tty
[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m '1901-git-check'
[newrain d32a6f0] 1901-git-check1 file changed, 1 insertion(+)

回到master分区,进行合并,出现冲突

[root@tty02 tty]# git checkout master
Switched to branch 'master'
Your branch is based on 'origin/master', but the upstream is gone.(use "git branch --unset-upstream" to fixup)
[root@tty02 tty]# git branch
* masternewrain[root@tty02 tty]# git merge newrain             #此时合并遇到了冲突
Auto-merging tty
CONFLICT (content): Merge conflict in tty
Automatic merge failed; fix conflicts and then commit the result.

解决冲突

[root@tty02 tty]# cat tty   #查看该文件
<<<<<<< HEAD
1901-git
=======
1901
newrain
>>>>>>> newrain
解释:
<<<<<<< HEAD
// 当前分支的修改内容
=======
// 待合并分支的修改内容
>>>>>>> newrain

 编辑该冲突文件,手动删除不需要的部分即可

[root@tty02 tty]# vim tty    #删除后见下图,下图就是我要保留的内容

[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m "解决合并冲突"
[master 47f3b39] 解决合并冲突

 此时就已经解决该冲突。

删除分支

因为之前已经合并了newrain分支,所以现在看到它在列表中。 在这个列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;刚刚已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。查看所有包含未合并工作的分支,可以运行 git branch --no-merged

如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它。

 删除本地分支

[root@tty02 tty]# git branch   #查看分支
* masternewrain[root@tty02 tty]# git branch -d newrain    #删除这个分支
Deleted branch newrain (was d32a6f0).[root@tty02 tty]# git branch               #此时就没有了
* master  

删除远程分支

如果需要删除远程仓库中的分支,可以使用 git push 命令和 --delete 选项:

git push origin --delete <branch-name>

这样就完成了删除分支的操作。在执行任何删除操作之前,确保理解并确认删除的分支不再需要,并且对删除的后果有清晰的了解。

相关文章:

Git分支结构

目录 1. 线性分支结构 2. 分叉与合并结构 3. 分支与标签的关系 4. 并行开发与分支管理策略 测试&#xff08;本机系统为Rocky_linux9.4&#xff09; 合并失败解决 删除分支 删除本地分支 删除远程分支 Git 中的分支结构是版本控制中非常重要的概念之一&#xff0c;它描…...

测试流程规范建设

建设目的 通过规则保障团队高效协同&#xff0c;自驱、可控。能和所有成员达到精确的沟通。 基本规则 测试角色管理 红线-QA 新员工试用期考核流程&#xff08;RD&#xff09; 周会--QA 周报--QA 需求阶段 需求变更规范 开发阶段 接口文档规范 代码走查规范 分支管…...

启英泰伦CI13LC系列:打造AI语音芯片性价比之王!

在智能家居、消费电子、汽车电子等领域&#xff0c;语音识别技术已深度融入各类设备。通过嵌入语音芯片&#xff0c;这类设备可识别并执行用户的语音指令&#xff0c;无论是启动、调节还是关机&#xff0c;仅需一句话即可完成&#xff0c;极大地简化了操作流程。 智能语音部分应…...

headerpwn:一款针对服务器响应与HTTP Header的模糊测试工具

关于headerpwn headerpwn是一款针对服务器响应与HTTP Header的模糊测试工具&#xff0c;广大研究人员可以利用该工具查找网络异常并分析服务器是如何响应不同HTTP Header的。 功能介绍 当前版本的headerpwn支持下列功能&#xff1a; 1、服务器安全与异常检测&#xff1b; 2、…...

2021 RoboCom 世界机器人开发者大赛-本科组(复赛):拼题A打卡奖励

拼题 A 的教超搞打卡活动&#xff0c;指定了 N 张打卡卷&#xff0c;第 i 张打卡卷需要 mi​ 分钟做完&#xff0c;完成后可获得 ci​ 枚奖励的金币。活动规定每张打卡卷最多只能做一次&#xff0c;并且不允许提前交卷。活动总时长为 M 分钟。请你算出最多可以赢得多少枚金币&a…...

flink 大数据处理资源分配

Flink在大数据处理中的资源分配是一个复杂但至关重要的过程&#xff0c;它直接影响到作业的性能和稳定性。以下将从几个方面详细阐述Flink的资源分配机制和优化策略&#xff1a; 一、资源分配概述 Flink是一个用于无界和有界数据流处理的分布式计算框架&#xff0c;它通过集群…...

独立站营销新思路:携手TikTok达人,促进用户参与与品牌传播

数字化时代&#xff0c;品牌传播的方式发生了重大变化。尤其是TikTok&#xff0c;作为全球最受欢迎的短视频平台之一&#xff0c;其独特的社群特点和用户行为模式&#xff0c;对品牌独立站提供了全新的营销思路。本文Nox聚星将和大家分析TikTok社群的特点和用户行为模式&#x…...

工单管理系统能解决什么?

工单系统具备智能化派单模式工程师响应快减少员工等待时间。自定义知识库可提升工程师专业技能水平&#xff0c;帮助工程师迅速判断员工问题&#xff0c;极大提升员工报单体验。系统还能够大幅提升职能部门可以服务的用户数&#xff0c;有效降低专业人力成本开支&#xff0c;提…...

探索Facebook在人工智能领域的最新进展

在当今快速发展的科技领域中&#xff0c;人工智能&#xff08;AI&#xff09;作为一项关键技术&#xff0c;正在逐步改变着社交媒体的面貌。作为全球最大的社交平台之一&#xff0c;Facebook积极探索和应用人工智能&#xff0c;以提升用户体验、增强平台安全性并推动技术创新。…...

Deepspeed : AttributeError: ‘DummyOptim‘ object has no attribute ‘step‘

题意&#xff1a;尝试在一个名为 DummyOptim 的对象上调用 .step() 方法&#xff0c;但是这个对象并没有定义这个方法 问题背景&#xff1a; I want to use deepspeed for training LLMs along with Huggingface Trainer. But when I use deepspeed along with trainer I get …...

【Python123题库】#查询省会 #字典的属性、方法与应用

禁止转载&#xff0c;原文&#xff1a;https://blog.csdn.net/qq_45801887/article/details/140081665 参考教程&#xff1a;B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 查询省会字典的属性、方法与应用 查询省会 类型…...

数据建设实践之大数据平台(一)

大数据组件版本信息 zookeeper-3.5.7hadoop-3.3.5mysql-5.7.28apache-hive-3.1.3spark-3.3.1dataxapache-dolphinscheduler-3.1.9大数据技术架构 大数据组件部署规划 node101node102node103node104node105datax datax datax ZK ZK ZK RM RM NM...

【MIT 6.5840/6.824】Lab1 MapReduce

MapReduce MapReduce思想实现思路感受 6.5840/6.824 Lab与笔记汇总 本文对应的Lab版本为MIT6.5840-Spring2024的Lab1 本博客只提供思路&#xff0c;不会公开任何代码 本lab耗时约6h&#xff0c;码量约500行 MapReduce思想 MapReduce的思想属于是比较简单的&#xff0c;分为两…...

如何在 C 语言中进行选择排序?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…...

开源浏览器引擎对比与适用场景:WebKit、Chrome、Gecko

WebKit与Chrome的Blink引擎对比 起源与关系&#xff1a; WebKit最初由苹果公司开发&#xff0c;用于Safari浏览器。后来&#xff0c;WebKit逐渐成为一个独立的开源项目&#xff0c;被多个浏览器厂商采用。Blink是Google基于WebKit项目分支出来的一个浏览器引擎&#xff0c;用于…...

DNF客户端使用

客户端使用 1、下载客户端2、配置网关连接到服务器2.1 网关设置参数&#xff1a;2.2 点击连接网关2.3 点击“参数设置内容立即生效” 3、使用网关生成登陆器3.1 登陆器参数设置3.2 点击增加3.3 复制网关的通信密钥,点击生成登陆器 4、复制替换相关文件4.1 复制登陆器到客户端文…...

打包时提示:Missing Gradle Project Information.或者在加载gradle时出错

1.Android打包弹出错误提示框&#xff1a;missing gradle project information. please check if the IDE successfully synchronized its state with the Gradble project model. 2.加载gradle出错&#xff1a;修复报错后 File -> Sync Project with Gradle Files...

基于前馈神经网络 FNN 实现股票单变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…...

Scikit Learn - 建模手册(02)--- 数据表示、估算器

Scikit Learn - 数据表示 文章目录 一、说明二、数据表格2.1 数据作为特征矩阵2.2 数据作为目标数组 三、什么是 Estimator API四、Estimator API 的使用五、指导原则六、使用 Estimator API 的步骤七、监督学习示例八、无监督学习示例 一、说明 众所周知&#xff0c;机器学习…...

【鸿蒙学习笔记】通过用户首选项实现数据持久化

官方文档&#xff1a;通过用户首选项实现数据持久化 目录标题 使用场景第1步&#xff1a;源码第2步&#xff1a;启动模拟器第3步&#xff1a;启动entry第6步&#xff1a;操作样例2 使用场景 Preferences会将该数据缓存在内存中&#xff0c;当用户读取的时候&#xff0c;能够快…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...