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>

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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试八股之描述一下MySQL使用索引查询数据的过程

描述一下MySQL使用索引查询数据的过程 1.解析查询语句与查询优化 用户提交一个 SQL 查询语句&#xff0c;MySQL 的查询解析器对其进行词法分析和语法分析&#xff0c;生成解析树。 查询优化器根据解析树、表结构信息、统计信息以及索引信息&#xff0c;决定是否使用 B树索引…

如何创建录取查询系统

随着新学期的脚步渐近&#xff0c;老师们的日程表上又添上了密密麻麻的任务。开学前的准备工作总是让人应接不暇&#xff0c;从整理教材到布置教室&#xff0c;再到准备课程计划&#xff0c;每一项工作都需要细心与耐心。而在这些繁琐的事务中&#xff0c;如何高效地将录取结果…

2018-2022 年份微博签到数据集

前阵子接到一个实验室老师的需求&#xff0c;采集五年前&#xff08;2024-52019&#xff09;过年前后的北京微博签到数据。 前两年采集的深圳签到数据是 2022 年是当年的尚可&#xff0c;这次虽然时间跨度只有两个月&#xff0c;但是由于时间太过久远&#xff0c;但是颇费了一…

Java面试八股之MySQL中的MVCC是什么,作用是什么?

MySQL中的MVCC是什么&#xff0c;作用是什么&#xff1f; MySQL中的MVCC&#xff08;Multiversion Concurrency Control&#xff0c;多版本并发控制&#xff09;是一种并发控制机制&#xff0c;用于提高数据库的并发性能并确保数据的一致性&#xff0c;特别是在高并发读写场景…

学习笔记——动态路由——OSPF(特殊区域)

十、OSPF特殊区域 1、技术背景 早期路由器靠CPU计算转发&#xff0c;由于硬件技术限制问题&#xff0c;因此资源不是特别充足&#xff0c;因此是要节省资源使用&#xff0c;规划是非常必要的。 OSPF路由器需要同时维护域内路由、域间路由、外部路由信息数据库。当网络规模不…

Collection 和 Collections 的区别与用法

Collection 和 Collections 的区别与用法 1、Collection 接口1.1 主要特点1.2 常见方法 2、 Collections 工具类2.1 主要特点2.2 常见方法 3、示例代码3.1 使用 Collection 接口3.2 使用 Collections 工具类 4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收…

Labview_压缩文件

调用顺序 源文件 生成后的文件 1.新建ZIP文件 生成ZIP文件的路径&#xff1a;为最终生成ZIP文件的路径&#xff0c;需要提供ZIP文件的名称和类型 2.添加文件到压缩文件 源文件路径&#xff1a;为需要压缩的文件路径&#xff0c;非文件夹路径 生成ZIP文件时的路径&#x…

Rust: 高性能序列化库Fury PK bincode

在序列化库中&#xff0c;传统的有Json,XML&#xff0c;性能好的有thrift&#xff0c;protobuf等。 对于二进制库来讲&#xff0c;据Fury官网的介绍&#xff0c;Fury性能要远远好于protobuf&#xff0c;且不象protobuf还需要定义IDL(即写.proto文件)&#xff0c;非常轻便&#…

HTML语言常见标签

语法 HEAD部分的HTML标签 1 标题标签 <title>标题内容</title> 2 段落标签 <meta charset"utf-8"/> BODY部分的HTML标签 1标题标签&#xff08;独占一行&#xff09;<h1>标题内容</h1> 2段落标签&#xff08;独占一行&#xff09;…

禁用华为小米?微软中国免费送iPhone15

微软中国将禁用华为和小米手机&#xff0c;要求员工必须使用iPhone。如果还没有iPhone&#xff0c;公司直接免费送你全新的iPhone 15&#xff01; 、 这几天在微软热度最高的话题就是这个免费发iPhone&#xff0c;很多员工&#xff0c;收到公司的通知。因为&#xff0c;登录公司…

使用Layui实现表格数据的分页功能

最近在用Layui做表格数据的展示时想把所有的数据进行分页展示&#xff0c;于是在网上找了一个模板 <script type"text/javascript" > layui.use([table,layer,form,laypage], function(){var table layui.table,layer layui.layer,form layui.form,laypage…

【ROS2】中级-编写动作服务器和客户端(C++)

目标&#xff1a;用 C实现一个动作服务器和客户端。 教程级别&#xff1a;中级 时间&#xff1a;15 分钟 目录 背景 先决条件 任务 1. 创建 custom_action_cpp 包2. 编写动作服务器3. 编写动作客户端 摘要 相关内容 背景 动作是 ROS 中异步通信的一种形式。动作客户端向动作服务…

LeetCode 203.移除链表元素 C做法

LeetCode 203.移除链表元素 C做法 思路&#xff1a; ​ 由于是单链表&#xff0c;所以我们可以创建一个新的头结点newhead&#xff0c;把不是val的结点尾插在newhead中&#xff0c;而等于val的结点给释放&#xff0c;最后返回newhead。防止时间复杂度过高&#xff0c;我们再创…

数据仓库哈哈

数据仓库 基本概念数据库&#xff08;database&#xff09;和数据仓库&#xff08;Data Warehouse&#xff09;的异同 整体架构分层架构方法论ER模型&#xff08;建模理论&#xff09;维度模型 何为分层第一层&#xff1a;数据源&#xff08;ODS ER模型&#xff09;设计要点日志…

代理详解之静态代理、动态代理、SpringAOP实现

1、代理介绍 代理是指一个对象A通过持有另一个对象B&#xff0c;可以具有B同样的行为的模式。为了对外开放协议&#xff0c;B往往实现了一个接口&#xff0c;A也会去实现接口。但是B是“真正”实现类&#xff0c;A则比较“虚”&#xff0c;他借用了B的方法去实现接口的方法。A…

大小端详解

引例 我们知道整形(int)是4个字节&#xff0c;例如随便举个例子&#xff1a;0x01020304&#xff0c;它一共占了四个地址位&#xff0c;01,02,03,04分别占了一个字节&#xff08;一个字节就对应了一个地址&#xff09;。 那么就会有个问题&#xff1a;我们的01到底是存储在高地…

es是如何处理索引数据的变动的?

1 概述 es是如何处理索引数据的变动的&#xff1f; 或者说索引数据变动时&#xff0c;es会执行哪些操作&#xff1f; refresh、fsync、merge 和 flush 操作有何作用&#xff1f; es是如何确保即使es发生宕机数据也不丢失的&#xff1f; 在回答上述问题前&#xff0c;可以先…

在vue3中,手写父子关联,勾选子级父级关联,取消只取消当前子级,父节点不动

树形控件选择子级勾选父级&#xff0c;以及所有子级&#xff0c; 取消勾选仅取消子级 在项目中&#xff0c;可能会遇到这种场景&#xff0c;比如权限配置的时候&#xff0c;页面权限和菜单权限以tree的形式来配置&#xff0c;而且不用半选&#xff0c;菜单在页面的下面&#xf…

Mosh|初学者 SQL 教程

sql文件链接&#xff1a;链接: https://pan.baidu.com/s/1okjsgssdxMkfKf8FEos7DA?pwdf9a9 提取码: f9a9 在mysql workbench 导入 create_databases.sql 文件&#xff0c;下面是运行成功的界面 快捷方式&#xff1a;全部运行可以同时按下controlcommandenter &#xff0c;或者…

WindowsMac共享文件夹设置

共享文件夹设置 共享文件夹设置Windows系统设置步骤一&#xff1a;设置共享文件夹步骤二: 访问共享文件夹 Mac系统中设置共享文件夹步骤一&#xff1a;设置共享文件夹步骤二&#xff1a;访问共享文件夹 小贴士结论 共享文件夹设置 有时需要在多台电脑之间共享文件夹&#xff0…