【Git企业开发】第一节.Git 的分支管理

news2024/12/23 0:45:12

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:Git企业级开发

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!!

文章目录

前言

一、理解分支

二、创建、切换、合并分支

2.1 创建分支

2.2 切换分支

2.3 合并分支

三、删除分支

总结



前言

一、理解分支

分⽀就是科幻电影⾥⾯的平⾏宇宙,当你正在电脑前努⼒学习 C++ 的时候,另⼀个你正在另⼀个平⾏宇宙⾥努⼒学习 JAVA。

如果两个平⾏宇宙互不⼲扰,那对现在的你也没啥影响。不过,在某个时间点,两个平⾏宇宙合并了,结果,你既学会了 C++ ⼜学会了 JAVA!
图片示例:

举例说明:


在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即 master 分⽀。

再来理解⼀下HEAD,HEAD 严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD 指向的就是当前分⽀。
图片示例:
每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越来越⻓,⽽HEAD只要⼀直指向master分⽀即可指向当前分⽀。
图片示例:

通过查看当前的版本库,我们也能清晰的理出思路:
代码示例:
所以说HEAD指向的master分⽀是指向最新一次提交的;

二、创建、切换、合并分支

2.1 创建分支

Git ⽀持我们查看或创建其他分⽀,在这⾥我们来创建第⼀个⾃⼰的分⽀ dev ,对应的命令为:
代码示例:

当我们创建新的分⽀后,Git 新建了⼀个指针叫 dev, * 表⽰当前 HEAD 指向的分⽀是 master 分⽀。
另外,可以通过⽬录结构发现,新的 dev 分⽀:
代码示例:
hyb@139-159-150-152:~/gitcode$ ls .git/refs/heads/          #通过目录结构查看heads分支
dev master
hyb@139-159-150-152:~/gitcode$ cat .git/refs/heads/*    
5476bdeb12510f7cd72ac4766db7988925ebd302
5476bdeb12510f7cd72ac4766db7988925ebd302

发现⽬前 dev 和 master 指向同⼀个修改。
并且也可以验证下 HEAD ⽬前是指向 master 的。
代码示例:
hyb@139-159-150-152:~/gitcode$ cat .git/HEAD
ref: refs/heads/master

图示总结上述过程:


2.2 切换分支

那如何切换到 dev 分⽀下进⾏开发呢?使⽤ git checkout 命令即可完成切换,
代码⽰例如下:
hyb@139-159-150-152:~/gitcode$ git checkout dev      #切换到dev分支
Switched to branch 'dev'
hyb@139-159-150-152:~/gitcode$ git branch           #此时HEAD 指向的分⽀是dev分支
* dev
master
hyb@139-159-150-152:~/gitcode$ cat .git/HEAD   # 验证下 HEAD⽬前是指向 master 
ref: refs/heads/dev

图示说明上述过程:

我们发现 HEAD 已经指向了 dev,就表示我们已经成功的切换到了 dev 上!

接下来,在 dev 分⽀下修改 ReadMe ⽂件,新增⼀⾏内容,并进⾏⼀次提交操作:
代码示例:
hyb@139-159-150-152:~/gitcode$ vim ReadMe             #修改文件内容
hyb@139-159-150-152:~/gitcode$ cat ReadMe              #查看文件的内容
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write aaa for new branch                                                  #发现在文件中新增了一行内容
hyb@139-159-150-152:~/gitcode$ git add .                     #将工作区的文件添加到暂存区
hyb@139-159-150-152:~/gitcode$ git commit -m"modify ReadMe"
                                                                                            #将工作区的文件提交到本地库
[dev 3740dce] modify ReadMe
1 file changed, 1 insertion(+)

现在,dev 分⽀的⼯作完成,我们就可以切换回 master 分⽀:
代码示例:
hyb@139-159-150-152:~/gitcode$ git checkout master      #切换回master分支
Switched to branch 'master'
hyb@139-159-150-152:~/gitcode$ cat ReadMe                    #查看ReadMe文件的内容
hello bit
hello git
hello world
hello version1
hello version2
hello version3

切换回 master 分⽀后,发现ReadMe⽂件中新增的内容不⻅了!!!赶紧再切回 dev 看看:
代码示例:
hyb@139-159-150-152:~/gitcode$ git checkout dev      #切换到dev分支
Switched to branch 'dev'
hyb@139-159-150-152:~/gitcode$ cat ReadMe              #查看文件的内容
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write aaa for new branch
在 dev 分⽀上,内容还在。
为什么会出现这个现象呢?我们来看看 dev 分⽀和 master 分⽀指向,发现两者指向的提交是不⼀样的:
代码示例:
hyb@139-159-150-152:~/gitcode$ cat .git/refs/heads/dev
bdaf528ffbb8e05aee34d37685408f0e315e31a4
hyb@139-159-150-152:~/gitcode$ cat .git/refs/heads/master
5476bdeb12510f7cd72ac4766db7988925ebd302
看到这⾥就能明⽩了,因为我们是在dev分⽀上提交的,⽽master分⽀此刻的提交点并没有变,此时的状态如图如下所⽰。

图示状态说明:

当切换到 master 分⽀之时,HEAD 就指向了 master,当然看不到提交了!

2.3 合并分支

为了在 master 主分⽀上能看到新的提交,就需要将 dev 分⽀合并到 master 分⽀。
代码⽰例如下:
hyb@139-159-150-152:~/gitcode$ git branch
* dev
master
hyb@139-159-150-152:~/gitcode$ git checkout master     # 切换到 master 上进行合并
Switched to branch 'master'
hyb@139-159-150-152:~/gitcode$ git merge dev               # 合并 dev 分支
Updating 16623e1..3740dce
Fast-forward
ReadMe | 1 +
1 file changed, 1 insertion(+)
hyb@139-159-150-152:~/gitcode$ cat ReadMe                  # 此时我们再查看ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write aaa for new branch
                                                                                                                                                  
git merge 命令⽤于合并指定分⽀到当前分⽀。合并后,master 就能看到 dev 分⽀提交的内容 了。此时的状态如图如下所⽰

图示状态过程:

Fast-forward 代表“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度⾮常快。 当然,也不是每次合并都能 Fast-forward,我们后⾯会讲其他⽅式的合并。

三、删除分支

合并完成后, dev 分⽀对于我们来说就没⽤了, 那么dev分⽀就可以被删除掉,注意如果当前正处于此分⽀下,就不能删除当前分⽀,如:
                                                                                                                                                  
代码示例:
hyb@139-159-150-152:~/gitcode$ git branch                      #查看本地分支情况
* dev
master
hyb@139-159-150-152:~/gitcode$ git branch -d dev            #删除dev分支
error: Cannot delete branch 'dev' checked out at '/home/hyb/gitcode'

⽽可以在其他分⽀下删除当前分⽀,如:
                                                                                                                                                  
hyb@139-159-150-152:~/gitcode$ git checkout master        #切换到master分支            
Switched to branch 'master'
hyb@139-159-150-152:~/gitcode$ git branch -d dev              #删除dev分支
Deleted branch dev (was bdaf528).
hyb@139-159-150-152:~/gitcode$ git branch                         #查看本地分支情况
* master                                                                                        #此时只有master分支了
此时的状态如图如下所⽰。

图示状态示例:

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

总结

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

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

相关文章

java后端返回数据给前端时去除值为空或NULL的属性、忽略某些属性

目录 一、使用场景 二、环境准备 1、引入依赖 2、实体类 三、示例 1、不返回空值 (1)方式 (2)测试 (3)说明 2、不返回部分属性 (1)方式 (2)测试 一、使用场景 在开发过程中,有时候需要将后端数据返回前端,此时有些数据为空属性不需要返回&…

SSM度假村管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 度假村管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要 采用B/S模式开发…

[LaTeX] [数学符号] \mathbb{1}的各种替代方案:解决在 LaTeX 中输入黑板粗体的数字

[LaTeX] [数学符号] \mathbb{1}的各种替代方案:解决在 LaTeX 中输入黑板粗体的数字_latex mathbb-CSDN博客文章浏览阅读5w次,点赞36次,收藏80次。本文介绍如何在 LaTeX 中输入黑板粗体的数字。_latex mathbbhttps://blog.csdn.net/xovee/arti…

FRP内网穿透(待续)

FRP内网穿透技术原理: FRP可以将内网服务主机以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 1.GITHUB下载FRP 2.云服务器安装FRP修改配置 3.本地计算机安装FRP修改配置

R-FCN: Object Detection via Region-based Fully Convolutional Networks(2016.6)

文章目录 AbstractIntroduction当前最先进目标检测存在的问题针对上述问题,我们提出... Our approachOverviewBackbone architecturePosition-sensitive score maps & Position-sensitive RoI pooling Related WorkExperimentsConclusion 原文链接 源代码 Abstr…

iOS的应用生命周期以及应用界面

在iOS的原生开发中,我们需要特别关注两个东西:AppDelegate和ViewController。我们主要的编码工作就是在AppDelegate和ViewControlle这两个类中进行的。它们的类图如下图所示: AppDelegate是应用程序委托对象,它继承了UIResponder类…

业务设计——责任链验证推翻 if-else 炼狱

责任链模式 1. 什么是责任链模式 在责任链模式中,多个处理器依次处理同一个请求。一个请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再传递给 C 处理器,以此类推,形成一个链条,链…

Proteus仿真--左右来回流水灯仿真(仿真文件+程序)

本文主要介绍基于51单片机的流水灯仿真(完整仿真源文件及代码见文末链接) 仿真运行视频 Proteus仿真--基于51单片机的流水灯仿真(左右来回) 附完整Proteus仿真资料代码资料 百度网盘链接: https://pan.baidu.com/s/1pS1rHGOhwYgP…

springboot+vue基于协同过滤算法的私人诊所管理系统的设计与实现【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

MySQL Server 5.5 软件和安装配置教程

MySQL 5.5.58(32/64位)下载链接: 百度网盘:百度网盘 请输入提取码 提取密码:7act 软件简介: MySQL 是由瑞典MySQL AB 公司开发一个关系型数据库管理系统,目前属于 Oracle 旗下产品。MySQL 是最…

15KW永磁同步电动机设计

摘 要 在我们日常生活中,永磁同步电机随处可见,因为其相比其他电机而言结构相对简单,运行稳定且便于维修等优势,最重要的是永磁同步电机在调速方面具有很好的优势。随着自动控制技术和微电子技术的不断革新,目前的技术…

她从家乡自贡起步,努力奋斗进京任职

读罢“北京文博”于2023年10月14日发表的新闻报道《文明互鉴 文明共兴——2023国际城市媒体北京论坛在京举行》,心中甚为欣慰。因为当年从笔者家乡走出去的70后女青年吴旭,现在令人惊喜地已经成长为中华全国新闻工作者协会党组成员、中宣部对外推广局局长…

高等数学前置知识——一次函数

文章目录 一次函数1.1 一次函数1.2 正比例函数1.3 一次函数的平移1.4 一次函数常用知识 一次函数 1.1 一次函数 一次函数的定义为:y kx b ,k ≠ 0。 ​ 注:在这个函数中k代表斜率,b代表与y轴的截距。当 x 0 时,y…

挖坑法,Hoare,非递归法实现快速排序

时间:O(N*lgn)->最坏n^2(有序,逆序) 空间:logN N*2 Hoare Hoare法与其他快速排序算法的不同之处在于它使用两个指针(分别指向数组的起始位置和结束位置),并通过交换元素的方式来确定基准值的最终位置。…

python 安装成功后终端显示的还是低版本

如果你下载了新版的 Python,但在使用时发现仍然是之前的版本,可能是因为新版的 Python 没有替代系统环境中的旧版 Python。 检查 PATH 环境变量:在命令行中输入 python --version 来查看当前默认的 Python 版本。如果显示的是旧版 Python 的…

Zotero背景设置护眼模式

一、背景知识 Zotero是开源的文献管理工具,功能非常强大,可以安装多款插件。对我来说,其最大的优点是可以对文章分类和打标签,因为某个瞬间,我经常想起论文中的一个图片,或者某个细节,但是却记…

Android:窗口管理器WindowManager

Android:窗口管理器WindowManager 导言 本篇文章主要是对Android中与窗口(Window)有关的知识的介绍,主要涉及到的有: WindowWindowManagerWindowManagerService 主要是为了更进一步地向下地深入Android屏幕渲染的知识(虽然窗口…

vlc打开网络流(如rtmp),并查看媒体信息

打开vlc 选择媒体,打开网络串流 输入rtmp地址,点击播放 选择工具-编解码信息 可以查看节目的编码信息什么的

口袋参谋:如何快速挑选宝贝核心关键词?三种方法,简单有效!

做电商,一定要会选择关键词!这是我近十年做电商的经验之谈。 不管是标题还是直通车推广,都需要选择与产品相关度高、符合买家搜索习惯的关键词,只有这样,才能吸引更多自然流量!有了流量加持,还…

C#学习相关系列之多线程(七)---Task的相关属性用法

一、Task和Thread的区别 任务是架构在线程之上的,任务最终的执行还是要给到线程去执行的。任务和线程之间不是一对一的关系,任务更像线程池,任务相比线程池有很小的开销和精确的控制。(总的来说Task的用法更为先进,在多线程的时候…