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

git使用“保姆级”教程4——版本回退及分支讲解

一、版本回退

1、历史回退(版本回退)——命令行git reset --hard 版本编号

  • 注意:当前命令会让工作区的内容发生改变,可以理解成历史区(master分支)直接回到工作区
  • 比如:从版本4回到版本3,则工作区只会显示版本3的代码内容

1.1、指令解释

// 回退到上一次提交的版本 => 在Head(当前指针指向的位置)后添加一个^$ git reset --hard HEAD^// 回退到上上次提交的版本 => 在Head后添加两个^,依此类推$ git reset --hard HEAD^^// 这里的~2 等于 ^^写法,比较简洁 $ git reset --hard HEAD~2 // 后面还可以接"标识符"回到任意版本 => "标识符"来自提交版本时,生成的编号的前6位,可以通过`git log`查看$ git reset --hard 7016321 

1.2、图示说明

在这里插入图片描述
也就是:随着提交版本的增多,head会指向到最近一次记录

1.3、业务带入

  1. 创建4次提交版本记录——此时HEAD指针指向第4次的版本记录
    在这里插入图片描述
  2. 回退到第三次的版本记录
    在这里插入图片描述在这里插入图片描述
  3. 查看版本记录
    在这里插入图片描述

2、查看本地库所有的操作记录——命令行git reflog

  1. 查看所有的本地库操作记录
    在这里插入图片描述
  2. 找到对应版本号标识符
    在这里插入图片描述
  3. 回退到想回退的版本记录——从版本3回到版本4
    在这里插入图片描述
  4. 查看工作台
    在这里插入图片描述

3、历史回退(不修改工作区内容)——命令行git reset --soft

  • 注意:当前命令不会让工作区的内容消失,可以理解成版本回退到暂存区
  • 比如:从版本5回到版本3,工作区的代码不会消失
  • 作用
    • 版本注释写错时,可以选择这种回退方式,让代码放在暂存区后,再次重新提交到历史区,此时,可以重新补充版本注释内容
    • 当版本提交后,发现有bug需要修复时,可以通过这种方式,将提交后的代码撤回到暂存区,等修复bug后,再次将代码提交到暂存区,此时,之前退回来的代码会和这次修复后的代码进行合并,最后,将两份合并后的代码再一起提交到历史区,这样提交记录会很清晰
      • 注意:如果此时有,第二个页面功能已经开始写了,需要先提交当前需要修复的内容,不要再用全部上传了!
  1. 回退一个版本——从版本5回到版本3
    在这里插入图片描述
  2. 查看工作区 ——代码还在,可以理解回退到暂存区
    在这里插入图片描述
  3. 查看版本记录 ——记录已经没了
    在这里插入图片描述

4、git revert与git reset的区别

4.1、图解

在这里插入图片描述

4.2、注意

// 1、注意:这里可以不加 --hard $ git revert HEAD
// 2、注意:和reset不同,revert这里的HEAD和reset差了一个版本,也就是:revert HEAD是回到上一个版本,revert HEAD^是回到上上个版本

4.3、业务带入

  1. 输入命令行回退到上个版本
    在这里插入图片描述
  2. 进入当前页面,输入i进行注释编辑,再输入esc退出,最后输入:wq回车
    在这里插入图片描述
  3. 查看版本记录——新增了一条记录信息
    在这里插入图片描述
  4. 查看工作区变化——代码内容已经回退成功了
    在这里插入图片描述

4.4、对比解释

  1. git reset
    • 回滚到对应的commit-id(提交记录)
    • 相当于是:删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录
    • 如果要推送到远程服务器的话,reset这种回退方式会比较危险,因为需要强制推送-f,有可能覆盖团队内别人的代码,此时,比较建议使用git reset --soft这种回退方式再次提交
  2. git revert
    • 用来撤销某个特定提交的更改,但它不会直接修改或删除之前的提交记录。
    • 它会新建一个提交,把之前那个提交的改动“反向操作”一下
      • 比如:如果之前的提交是添加了某些代码,revert会新建一个提交来删除这些代码
    • 如果要推送到远程服务器的话,就是普通的操作git push就好了

二、版本回退

1、初识分支

  1. 解释
    • git分支就是:我们把整个文件夹分成一个个独立的区域,比如:
      • 在开发登录功能时,可以放在login分支下进行开发;
      • 开发列表功能时,可以放在list分支下进行开发;
      • 大家互不干扰,每个功能都是一个独立的功能分支,开发完成后,再合并到主分支中,分支没有用的时候,也可以删掉,这样开发就会好很多
    • git在初始化时,会自动生成master主分支,同时,我们也可以自己开辟出独立分支
  2. 作用
    • 在应对团队协作中,测试功能时不阻塞其它功能的开发进程
    • 单兵作战中,方便修复bug,不影响其它功能的正常开发
  3. 解释
    在这里插入图片描述
    在这里插入图片描述

2、创建分支

  1. 创建分支使用——git branch 分支名称指令
    在这里插入图片描述
  2. 查看当前分支情况——git branch指令
    • 可以看到,当前有两个分支:一个是master,一个是list
    • 前面带有* 号,且有高亮显示的分支,表示:当前所处的分支
      在这里插入图片描述

3、切换分支

  1. 解释
    • 对列表功能的开发要移动到list分支去完成,所以需要使用git checkout 分支名称进行切换
    • 注意:切换分支之前,一定要将当前分支的内容提交!否则在别的分支上会出现当前分支代码,这不对!
  2. 命令行:
// 切换到 list 分支$ git checkout list
  1. 后续
    • 后续在该分支上进行列表功能的开发,开发完成后,在当前分支上进行提交,提交后我们再进行分支切换
    • 发现master上还是最初始的状态,而list分支上有我们新写的列表功能的代码,此时按照分支把所有功能都开发完毕后,把所有代码都合并到master主分支上就可以了
  2. 图示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4、合并分支

  1. 解释
    • git中的合并分支,只能是:把别的分支内容合并到自己的分支上
    • 使用的指令是:git merge
// 切换到 master 分支$ git checkout master// 把 list 的内容合并到自己的分支$ git merge list
  1. 后续
    • 这时,刚才在list分支上开发的内容,就都来到了master主分支上
    • 如果有多个分支的话,那么所有的最后分支都合并到master分支上时,我们的主分支上就有完整网站的所有页面,各个分支上都是单独的页面和功能
  2. 图解
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5、删除分支

  1. 解释: 此时开辟的list分支就没有什么用了,也就可以删除分支
  2. 步骤及命令行
    • 先切换到别的分支
    • 使用指令git branch -d 分支名称进行删除
// 先切换到别的分支$ git checkout master// 删除 list 分支 => -d的意思是delete的缩写$ git branch -d list
  1. 图解
    在这里插入图片描述

相关文章:

git使用“保姆级”教程4——版本回退及分支讲解

一、版本回退 1、历史回退(版本回退)——命令行git reset --hard 版本编号 注意:当前命令会让工作区的内容发生改变,可以理解成历史区(master分支)直接回到工作区比如:从版本4回到版本3,则工作区只会显示版本3的代码内容 1.1、指…...

spring cache,Spring data redis

本项目使用Redis存储缓存数据,如何通过Java去访问Redis? 常用的有Jedis和Lettuce两个访问redis的客户端类库 ,Jedis和Lettuce都是redis提供的。其中Lettuce的性能和并发性要好一些,Spring Boot 默认使用的是 Lettuce 作为 Redis …...

10.数据结构与算法-线性表的应用(线性表与有序表的合并)

线性表的合并 有序表的合并 顺序表 链表...

GAN|对抗| 生成器更新|判别器更新过程

如上图所示,生成对抗网络存在上述内容: 真实数据集;生成器;生成器损失函数;判别器;判别器损失函数;生成器、判别器更新(生成器和判别器就是小偷和警察的关系,他们共用的…...

day01——登录功能

逻辑: 前端将登录信息通过报文的形式,发送给后端。后端进行登陆验证 2.1 根据接受的用户名,查询数据表。 若不存在该用户的记录,返回用户不存在。 若用户存在,判断数据库中的密码和接收的是否一致,不一致则…...

Flutter中使用FFI的方式链接C/C++的so库(harmonyos)

Flutter中使用FFI的方式链接C/C库(harmonyos) FFI plugin创建和so的配置FFI插件对so库的使用 FFI plugin创建和so的配置 首先我们可以根据下面的链接生成FFI plugin插件:开发FFI plugin插件 然后在主项目中pubspec.yaml 添加插件的依赖路径&…...

【C++】二义性

在C中,二义性(ambiguity)通常指的是编译器无法确定使用哪个函数、变量或类成员的情况。这种不确定性通常是由于继承和多态特性导致的。下面是一些常见的产生二义性的场景以及如何解决它们的方法: 1. 多重继承中的二义性 当一个类…...

高并发内存池(五):ThreadCache、CentralCache和PageCache的内存回收机制、阶段性代码展示和释放内存过程的调试

目录 ThreadCache的内存回收机制 补充内容1 补充内容2 补充内容3 补充内容4 ListTooLong函数的实现 CentralCache的内存回收机制 MapObjectToSpan函数的实现 ReleaseListToSpans函数的实现 PageCache的内存回收机制 补充内容1 补充内容2 ReleaseSpanToPageCache函…...

STL之stackqueue篇(上)探索C++ STL中的Queue与Stack——构建数据处理的基础框架

文章目录 前言一、stack1.1 定义与基本概念1.2 底层容器1.3 成员函数1.4 使用示例1.5 注意事项1.6 应用场景 二、queue2.1 定义与基本概念2.2 底层容器2.3 成员函数2.4 使用示例2.5 注意事项2.6 应用场景 前言 本文旨在深入探讨C STL中的queue与stack容器,从它们的…...

代码随想录算法训练营Day13

110.平衡二叉树 力扣题目链接:. - 力扣(LeetCode) 后序迭代 class Solution {public boolean isBalanced(TreeNode root) {return getHeight(root)!-1;}public int getHeight(TreeNode root){if(rootnull){return 0;}int leftheightgetHei…...

基于STM32的智能门禁系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 RFID数据采集与处理门禁控制实现显示与报警功能应用场景结论 1. 引言 智能门禁系统在现代安防中占据重要地位,通常用于控制进入和离开特定区域的权限。通过基于STM32微控制器…...

[EBPF] 实时捕获DM数据库是否存在SQL阻塞

1. 介绍 eBPF(extened Berkeley Packet Filter)是一种内核技术,它允许开发人员在不修改内核代码的情况下运行特定的功能。eBPF 的概念源自于 Berkeley Packet Filter(BPF),后者是由贝尔实验室开发的一种网…...

秋招内推--招联金融2025

【投递方式】 直接扫下方二维码,或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus,使用内推码 igcefb 投递) 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…...

Unity2022.3.x各个版本bug集合及推荐稳定版本

最近升级到Unity2022,发现以下问题,仅作参考 2022.3.0f1 - 2022.3.6f1 粒子渲染到RenderTexture闪屏 https://issuetracker.unity3d.com/issues/android-vulkan-visualisation-corruption-occurs-when-rendering-particles-to-render-texture 2022.3.…...

SparkSQL-性能调优

祝福 在这个举国同庆的时刻,我们首先献上对祖国的祝福: 第一,我们感谢您给我们和平的环境,让我们能快乐生活 第二,祝福我们国家未来的路越走越宽广,科技更发达,人民更幸福 第三,…...

leetcode-链表篇

leetcode-707 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性 prev 以指示链表中的…...

JetLinks物联网平台微服务化系列文章介绍

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、AI知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&#x…...

【QT Quick】基础语法:导入外部QML文件

在实际项目中,代码通常分为多个文件进行模块化管理,这样可以方便代码重用,例如统一风格或共享功能模块。我们将在此部分学习如何创建 QML 项目,并演示如何访问外部代码,包括其他 QML 文件、库文件以及 JS 代码。 准备…...

Llama 系列简介与 Llama3 预训练模型推理

1. Llama 系列简介 1.1 Llama1 由 Meta AI 发布,包含 7B、13B、33B 和 65B 四种参数规模的开源基座语言模型 数据集:模型训练数据集使用的都是开源的数据集,总共 1.4T token 模型结构:原始的 Transformer 由编码器&#xff08…...

【AIGC】ChatGPT提示词助力自媒体内容创作升级

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯高效仿写专家级文章提示词使用方法 💯CSDN博主账号分析提示词使用方法 💯自媒体爆款文案优化助手提示词使用方法 💯小结 &#x1f4af…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...