• Git学习(3):Git分支操作


    分支概念

    • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
      • 比如,正在开发主线任务时,收到一个新通知,要去做一个小功能,而别人正在开发主线功能,此时,就可以从下图879efe处开辟一个小分支,最后还可以把做的内容合并起来。
    • 几乎所有的版本控制系统,都以某种形式支持分支。
      • 使用的时候,默认它有一个主分支,master 代表主分支

    在这里插入图片描述

    每一次提交的时候,都会生成一个新的版本,并且 HEAD 指针会指向新的版本,
    在这里插入图片描述
    在这里插入图片描述
    再提交一次的话,HEAD会指向新的任务
    在这里插入图片描述
    三个提交,形成一条横线,这个横线称为主分支,可以理解为树干(默认存在)。后续可以在主分支上发叉(分支),
    在这里插入图片描述
    分支:在原来的任务上,开辟新的任务,来做新的任务,最后还可以把任务合并起来
    在这里插入图片描述

    创建分支

    • 命令
      • git branch 分支名称
        在这里插入图片描述
        此时,虽然创建了工作区(红框),但 HEAD 指向的工作区仍然在主分支(master)上,
        在这里插入图片描述
        在这里插入图片描述
        查看有没有创建好这个主分支,进入下一部分

    查看分支

    • 查看有没有创建好这个主分支
      • git branch 会列出当前有哪些分支,以及当前正在使用的分支是哪一个(当前使用的用*标记,下图所示,绿色)
      • 绿色为当前所在分支默认有一个 master 主分支

    在这里插入图片描述

    切换分支

    • 我不想在当前分支了,想切换到另一个分支去操作
      • git checkout 分支名称( tab 可以补齐)
        在这里插入图片描述
        新的分支,相当于把原来的代码,copy一份,放在了新的分支中,代码是一样的,然后通过分支切换,使得HEAD指向新的分支。当前工作区是新创建的分支
        在这里插入图片描述
        由于分支newBranch是从主分支复制过来的,所以其日志信息与主分支日志信息完全一样。
        在这里插入图片描述

    操作

    newBranch分支由主分支切换而来,所以其内容和主分支是一样的
    在这里插入图片描述
    在newBranch分支中创建 b.txt 文件
    在这里插入图片描述
    查看一下状态
    在这里插入图片描述
    将 a.txt 添加到缓存区
    在这里插入图片描述
    然后做一个提交,提交到本地仓库
    在这里插入图片描述
    再做 git log 的时候,发现有三条记录了,其中b.txt是在新分支上做的操作,并提交,则HEAD将指向新的分支版本
    在这里插入图片描述
    主分支上没有 b.txt,还停留在 '70bac4a37f’的版本
    在这里插入图片描述
    在这里插入图片描述
    我们切回主分支,发现确实没有 b.txt
    在这里插入图片描述

    在这里插入图片描述
    主分支中只有两个记录
    在这里插入图片描述
    继续在主分支 master 上做操作,生成新的版本
    在这里插入图片描述
    在这里插入图片描述
    切换到分支 newBranch,是看不到主分支中添加的 c.txt 的
    在这里插入图片描述
    在这里插入图片描述

    合并分支

    将两条线做的合并为一条线,合并之前,一定要弄清楚,是谁合并谁,看当前HEAD指向谁,谁就是当前分支,把另一个分支合并到当前分支上来。

    例:将newBranch 分支合并到主分支上,下图为当前状态
    在这里插入图片描述
    先将当前分支由newBranch切换到master主分支
    在这里插入图片描述
    合并分支,使用merge命令,合并后,主分支master上多了一个b.txt,来自newBranch分支,已经合并到了master
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    合并之后,newBranch 分支还存在

    删除分支

    如果想把 newBranch 分支删除,git branch -d 分支名称
    在这里插入图片描述
    上图中,按q即可重新输入
    删除分支之前,我们先看一下分支(合并分支,并不会删除以前的分支,除非手动删除分支)
    在这里插入图片描述
    在这里插入图片描述

    需求 git分支演练紧急修复bug

    需求就是把分支应用一下,在主分支上有一个工程,在工程当中做登录功能的时候,突然发现之前的版本有bug,此时,应该回到以前的那个版本,去修改那个bug,修改完bug之后,还要提交到主线上面去,

    • 在主分支上创建一个工程,在工程当中添加登录.html(登录功能)

    • 创建一个分支,回退到上一个版本,提交合并
      在这里插入图片描述
      上图是已发布版本,突然告诉你版本 1a275e62f 有 bug,而此时版本 716b3d1d 已经开发了一半。此时我们要回到以前的版本 1a275e62f ,并开一个分支,去做这件事情,
      在这里插入图片描述
      在这里插入图片描述

    切换分支后,其实应该是下图效果,相当于把主分支的内容,搞了一份放到子分支里面,
    在这里插入图片描述

    在这里插入图片描述

    把 HEAD 指向子分支,
    在这里插入图片描述

    在这里插入图片描述
    然后回退到上一个版本 git reset
    在这里插入图片描述
    在这里插入图片描述
    查看一下该版本的内容,有 a.txt 和 c.txt 两个文件,没有 b.txt
    在这里插入图片描述
    在 a.txt 中添加一些内容,a.txt是空的内容
    在这里插入图片描述
    通过 cat 命令查看a.txt的内容,发现为空(啥也没有输出)
    在这里插入图片描述
    回车后,按 i 键 进行编辑
    在这里插入图片描述

    输入hellow world,然后底部通过 wq功能,回车进行保存
    想要把输入的内容保存:先按esc键,接着按shift+冒号,看下图的变化

    在这里插入图片描述
    回车后即可实现保存,并再次通过 cat 命令查看此时内容
    在这里插入图片描述
    假设此时已经修复了bug
    在这里插入图片描述
    还是红色,需要添加到缓存区,然后提交到本地仓库
    在这里插入图片描述
    在这里插入图片描述
    此时达到目的:在紧急分支 hotBranch 中把 1a275e62f 存在的问题修复完毕,并生成了一个新的版本 51caa1252
    在这里插入图片描述
    然后把 hotBranch 分支内容合并到主分支上去,首先切换到主分支master上
    在这里插入图片描述

    在这里插入图片描述
    把 hotBranch 合并到 主分支 master 上,可以看出,在 a.txt 上加了一项信息
    在这里插入图片描述
    合并之后,主分支 master 中,a.txt、b.txt和c.txt都存在
    在这里插入图片描述
    查看 a.txt 的内容
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    web前端期末大作业:云南旅游网页主题网站设计——云南城市旅游5页HTML+CSS+JavaScript
    Postman - 设置变量
    我的 Kafka 旅程 - broker
    Java | sleep、wait、yield、join、notify、notifyAll
    Chip and Ribbon(Round 158)
    Ubuntu22.04 下 NFS 相关问题与完整配置(客户机 MacOS)
    Credo推出业界首款单片集成CMOS VCSEL驱动器的800G光DSP芯片
    Spring Boot 2.x系列【22】应用监控篇之Health端点
    Springboot+vue的社区医院管理系统(有报告),Javaee项目,springboot vue前后端分离项目
    点云从入门到精通技术详解100篇-基于尺度统一的三维激光点云与高清影像配准
  • 原文地址:https://blog.csdn.net/weixin_46713695/article/details/126414467