当前位置: 首页 > 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…...

SSTI基础

<aside> &#x1f4a1; 简介 </aside> 原理 又名&#xff1a;Flask模版注入 模版种类 **Twig{{7*7}}结果49 jinja2{{7*7}}结果为7777777 //jinja2的常见参数是name smarty7{*comment*}7为77**<aside> &#x1f4a1; flask实例 </aside> **from …...

10.1软件工程知识详解上

软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过程&#xff0c;任务是确定软件开发工程必须完成的总目标&#xff0c;具体可分成问题定义、可行性研究、需求分析等。软件开发时期&#xff1a;就是软件的设计与实现&#xff0c;可分成…...

03Frenet与Cardesian坐标系(Frenet转Cardesian公式推导)

Frenet转Cardesian 1 明确目标 已知车辆质点在Frenet坐标系下的状态&#xff1a; Frenet 坐标系下的纵向坐标&#xff1a; s s s纵向速度&#xff1a; s ˙ \dot{s} s˙纵向加速度&#xff1a; s \ddot{s} s横向坐标&#xff1a; l l l横向速度&#xff1a; l ˙ \dot{l} l…...

knowLedge-Vue I18n 是 Vue.js 的国际化插件

1.简介 Vue I18n 是 Vue.js 的国际化插件&#xff0c;它允许开发者根据不同的语言环境显示不同的文本&#xff0c;支持多语言。 Vue I18n主要有两个版本&#xff1a;v8和v9。v8版本适用于Vue2框架。v9版本适用于Vue3框架。 2. 翻译实现原理 Vue I18n 插件通过在 Vue 实例中注…...

【开源免费】基于SpringBoot+Vue.JS微服务在线教育系统(JAVA毕业设计)

本文项目编号 T 060 &#xff0c;文末自助获取源码 \color{red}{T060&#xff0c;文末自助获取源码} T060&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

expressjs 中的mysql.createConnection,execute 怎么使用

在 Express.js 应用中使用 MySQL 数据库&#xff0c;你通常会使用 mysql 或 mysql2 这样的库来创建和管理数据库连接&#xff0c;并执行查询。然而&#xff0c;mysql.createConnection 并不直接提供 execute 方法。相反&#xff0c;你可以使用 query 方法来执行 SQL 语句。 以…...

每日一题|983. 最低票价|动态规划、记忆化递归

本题求解最小值&#xff0c;思路是动态规划&#xff0c;但是遇到的问题是&#xff1a;动态规划更新的顺序和步长&#xff0c;以及可能存在的递归溢出问题。 1、确定dp数组含义 dp[i]表示第i天到最后一天&#xff08;可能不在需要出行的天数里&#xff09;&#xff0c;需要花费…...

oracle 正则 匹配 身份正 手机号

1.正则匹配身份证号: regexp_like(card_id,^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$) ^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$ ^[1-9]&#xff1a;第一位数字不能为0。 \d{5}&#xff1a;接下来…...

在树莓派上部署开源监控系统 ZoneMinder

原文&#xff1a;https://blog.iyatt.com/?p17425 前言 自己搭建&#xff0c;可以用手里已有的设备&#xff0c;不需要额外买。这套系统的源码是公开的&#xff0c;录像数据也掌握在自己手里&#xff0c;不经过不可控的三方。 支持设置访问账号 可以保存录像&#xff0c;启…...

2022年6月 Frontier 获得性能第一的论文翻译

为百万兆级加速架构做高性能 Linpack 优化 摘要 我们详细叙述了在 rocHPL 中做的性能优化&#xff0c;rocHPL 是 AMD 对 HPL 基准的开源实现&#xff0c;主要是针对节点进行优化的架构&#xff0c;是为百万兆级系统而设计的&#xff0c;比如&#xff1a;Frontier suppercomput…...

做网站要学/热门网站排名

在Java 8中&#xff0c;我们可以在Optional和Stream经常看到map()和flatMap()这两个方法&#xff0c;这两个方法是针对函数式特性引入的&#xff0c;两者功能上看似相近&#xff0c;但其实还是有很大区别的。让我们来了解一下吧。Optional中的比较我们会经常在Optional中使用到…...

下载网站后台/怎么网站推广

1、大部分SDK的方法需要在线程中执行&#xff0c;一般会放在主线程里执行&#xff0c;安卓中主线程一般用于UI渲染。 1 this.runOnUiThread(new Runnable() { 2 3 Override 4 public void run() { 5 // TODO Auto-generated method …...

企业信息管理系统源码/廊坊百度seo公司

在index.aspx<head></head>中加入如下代码&#xff0c;这3个文件可以在网上直接收索名字下载 [javascript] view plaincopy <mce:script type"text/javascript" src"jquery-1.2.6.pack.js" mce_src"jquery-1.2.6.pack.js">&l…...

内网网站建设/中国十大网络销售公司

1. 联合概率密度函数 2. 概率密度的性质 3. 二元连续型随机变量概率分布函数求解示例...

群晖服务器做网站/网站前期推广

Visual Studio 2010 Ultimate已经集成了Team Explorer&#xff0c;而不需要像Visual Studio 2008一样还需要单独安装Team Explorer&#xff0c;在第一篇里已经提到了。 Visual Studio越来越强大了&#xff0c;功能也越来越全&#xff0c;在菜单栏可以看到【Architecture】&…...

wordpress showposts/2021百度最新收录方法

计算机网络 练习&#xff08;一百一十&#xff09; 当使用时间到达租约期的&#xff08;&#xff09;时&#xff0c;DHCP 客户端和 DHCP 服务器将更新租约。 A. 50% B. 75% C. 87.5% D. 100% ---------------------------------------- 答案&#xff1a; A 解析&#xff1a; …...