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

[Git][分支管理][上]详细讲解

目录

  • 1.理解分支
  • 2.创建分支
  • 3.切换分支
  • 4.合并分支
  • 5.删除分支


1.理解分支

  • 感性理解:分支可以理解为平行宇宙,但是在用户需要的时候,可以将两个平行宇宙合并,此时两个平行宇宙的效果将会"叠加"
  • 理性理解:每次提交,Git都会把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀
    • 截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即master分⽀
  • HEAD理解HEAD严格来说不是指向提交,⽽是指向mastermaster才是指向提交的
    • 所以HEAD指向的就是当前分⽀
    • 每次提交,master分⽀都会向前移动⼀步
      • 随着用户不断提交,master分⽀的线也越来越⻓
      • HEAD只要⼀直指向master分⽀即可指向当前分⽀
        请添加图片描述

2.创建分支

  • 查看分支git branch
    • *表示当前HEAD指向的分支
    $ git branch
    * master
    
  • 创建分支git branch branch_name
    • 创建好分支之后,Git将会新创建一个指针
    • 此时新创建的指针和master指向同一个修改,即同一个版本
    $ git branch dev
    $ git branchdev
    * master
    
    请添加图片描述

3.切换分支

  • 切换分支git checkout branch_name

  • 将创建分支和切换分支合二为一的命令git checkout -b branch_name

    $ git checkout dev
    Switched to branch 'dev'$ git branch
    * devmaster
    

    请添加图片描述

  • 切换到新的分支后,如果进行独立于的master分支的修改,并进行提交

    • 现象:新的分支有的内容,在master分支里并不存在
    • 原因:两分支指向的提交已经不一样了
      $ cat .git/refs/heads/master
      13204498006394d6067fbc8b6046885c6e5e9649
      $ cat .git/refs/heads/dev
      8ef34a28afd16a7c6f3ad43f136212850205bb22
      
      请添加图片描述

4.合并分支

  • 如果要在master分支上能看到最新的提交,就需要将新的分支合并到master分支
  • 合并分支git merge branch_name
    • 此处的Fast-forward表示快进模式
      • :直接将master指向新分支的当前提交,所以该种合并方式下速度非常快
    • 但并不是每次合并都能Fast-forward
    $ git branchdev
    * master
    $ git merge dev
    Updating 1320449..8ef34a2
    Fast-forwarddev.txt | 1 +1 file changed, 1 insertion(+)create mode 100644 dev.txt
    
    请添加图片描述

5.删除分支

  • 合并完成后,dev分⽀对于用户来说就没⽤了,那么dev分⽀就可以被删除掉

  • 删除分支git branch -d branch_name

    • 注意:如果当前正处于某分⽀下,就不能删除当前分⽀,需要切换到其他分支再删除
      请添加图片描述
  • 因为创建、合并和删除分⽀⾮常快,所以Git⿎励用户使⽤分⽀完成某个任务,合并后再删掉分⽀这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • day12 多线程
  • 力扣SQL50 按日期分组销售产品 group_concact
  • Javascript常见设计模式
  • PHP中如何实现函数的可变参数列表
  • Windows调大虚拟内存来代替升级物理运行内存(RAM)真的有用吗?
  • 03。仓颉程序结构
  • 安全基础学习-CRC理解与计算
  • JavaScript入门day6
  • VUE2项目打包dist后dist包中index打开空白页
  • Linux系统窗口水印难点分析
  • 使用FastChat快速部署LLM服务
  • Flask 介绍
  • 【多线程】阻塞队列
  • TOA/TDOA测距定位,三维任意(>3)个锚节点,对一个未知点进行定位|MATLAB源代码
  • Python网络爬虫核心面试题
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • avalon2.2的VM生成过程
  • Debian下无root权限使用Python访问Oracle
  • echarts花样作死的坑
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • github指令
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Phpstorm怎样批量删除空行?
  • Redis 中的布隆过滤器
  • Spring Cloud中负载均衡器概览
  • Terraform入门 - 3. 变更基础设施
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue脚手架vue-cli
  • 搭建gitbook 和 访问权限认证
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 对象引论
  • 复杂数据处理
  • 详解NodeJs流之一
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # Kafka_深入探秘者(2):kafka 生产者
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #php的pecl工具#
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (152)时序收敛--->(02)时序收敛二
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (八)Spring源码解析:Spring MVC
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (九十四)函数和二维数组
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十六)视图变换 正交投影 透视投影
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .apk 成为历史!