你不知道的git如何撤销回退版本

简言之:从1 回退到 3,在3版本通过回退记录(git reflog)找到它的上一条回退记录的hash值,复制1的hash值进行回退,执行git reset --hard 粘贴1的hash值进来,此时就回到1的版本了,执行git log即可看到1、2、3、4、5所有提交记录。

举例说明:我总共有1、2、3、4、5,5条提交版本记录,我现在已经回退到3了,可是这个版本我不满意,我要回退到1、2,也就是最近的一次提交;但是自从回退到3版本,我用git log找不到3之前的1、2的提交版本号(每个版本的一长串hash值),那如何才能找回它们的版本号呢?那就是用git reflog查看回退记录,git的撤销回退版本规则是这样的:在git reflog中找到上一条回退记录的,也就是你从哪回退来的这个hash值,复制这个hash值,使用 git reset --hard 粘贴到这里,就可以回到你 回退前的版本,也就是1最近的一次提交,再执行git log就可查到1、2、3、4、5所有提交记录。

实战演示

需求:回退到首次提交所有代码版本,再从此版本回退到第四次提交,也就是最近的一次提交。

1、这是我的提交记录

在这里插入图片描述

2、回退

git reset --hard  d4cbaafd76e7ddd0435d761566d1530426a636c8
或  git reset --hard  d4cbaaf // 取上面的前7位

当前回退的版本为d4cbaaf

在这里插入图片描述

3、此时用git log已经找不到之前的提交记录了,也就是 修复文档第四次提交的记录

在这里插入图片描述

4、虽然git log没有日志,但是git reflog 记载着每一次版本移动的记录以及对应版本的版本号

执行 git reflog
在这里插入图片描述
提示:git的回退是靠hash值的,所以只要有这个值,那一切都好办了。

5、正式从 回退版本撤销到最近提交的版本,即 首次提交所有代码 回到 第四次提交。换成数字举例就是 从3回到1

当前版本已成功回退到 第四次提交了,拿下。

git reset --hard f9ae7aa

在这里插入图片描述

6、撤销回退之后如果要提交这个版本更新到远端仓库,就执行git push -f,强制推送上去。

git push -f 

命令说明:回退版本后使用git push -f强制推送是为了覆盖远程仓库的当前版本。
其实撤销回退准确来讲还是叫回退,只是为了方便大家理解,更加语义化、直观的表达方式。

7、此时已经能看到当前版本之前的提交记录了,因为当前已经是 第四次提交的版本了,不再像 首次提交所有代码一样。

git log查看
在这里插入图片描述

git log 和 git reflog的区别

git log:只能看到当前版本以及它之前的记录,但是看不到它后来的版本。2看不到最新的1,但能看到2、3、4、5老的。如果当前是1,那就能看到1、2、3、4、5。

git reflog:查看每次版本移动的轨迹,回退时专用。
这个查看回退记录功能我就知道git设计者肯定不会随便的将部分版本删除掉了,肯定是需要用一些办法才能让不见天日的版本起死回生。

拓展:命令行如何复制hash值

鼠标选中复制的内容右键 => 选Paste (复制) => Copy (粘贴)

后言

今天在用git处理仓库的东西,突然就钻研了一下,把之前懂得不是很全的知识点补充了一下。至少我个人觉得这篇挺精髓的,这个撤销回退版本操作,不需要自己去备份老版本就可以自由回退不同版本,游刃有余。记录一下,方便以后遇到或者正在遇到找这个方案的小伙伴,就这样。😊

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

Oracle 高级网络压缩 白皮书

英文版白皮书在这里 或 这里。 本文包括了对英文白皮书的翻译,和我觉得较重要的要点总结。 执行概述 Oracle Database 12 引入了一项新功能:高级网络压缩,作为高级压缩选项的一部分。 本文概述了高级网络压缩、其优点、配置细节和性能分析…

C# 线程本地存储 为什么线程间值不一样

一:背景 1. 讲故事 有朋友在微信里面问我,为什么用 ThreadStatic 标记的字段,只有第一个线程拿到了初始值,其他线程都是默认值,让我能不能帮他解答一下,尼玛,我也不是神仙什么都懂&#xff0c…

Dockerfile中CMD命令的用法,你了解几个?

文章目录 1.问题描述2.解决方法3.问题原因分析4.CMD常见的用法4.1 执行应用程序4.2 使用 Shell 执行命令4.3 定义环境变量 5.最佳实践 1.问题描述 今天在进行业务调试时, 发现调试的java应用所在的容器无限重启,经过排查发现问题出在Dockerfile 文件中的CMD命令上&…

设计模式下

一、代理模式 一、概念 代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引 用。它使得客户不能直接与真正的目标对象通信。代理对象是目标对象的代表, 其他需要与这个目标对象打交道的操作都是和这个代理对象在交涉。 例如:去…

安装 nvm

前言: nvm 即 node 版本管理工具 (node version manager),好处是方便切换 node.js 版本。 通过将多个 node 版本安装在指定路径,然后通过 nvm 命令切换时,就会切换我们环境变量中 node 命令指定的实际执行的软件路径。 使用场景…

Selenium自动化测试之学会元素定位

这是我经常被问到的一个问题,也是我很讨厌回答的问题,因为要想回答这个问题需要知道上下文。什么样式的元素,有哪些属性,是否有表单嵌套,都尝试了哪些定位方法。。。而且没几个提问者能事先详细的说明这些。哪儿像提bu…

宠物互联网医院系统:数字化呵护你爱宠的新时代

宠物互联网医院系统正在为宠物主人提供一种前所未有的数字化健康护理体验。通过结合创新技术,这一系统旨在让宠物医疗变得更加便捷、智能和个性化。让我们深入探讨宠物互联网医院系统的技术核心,以及如何应用代码为你的爱宠提供最佳关怀。 1. 远程医疗…

操作系统-进程控制(如何实现进程控制 如何实现原子性 相关进程控制原语)

文章目录 什么是进程控制总览如何实现进程控制?如何实现原语的“原子性”?进程控制相关的原语创建原语撤销原语子进程与父进程阻塞与唤醒原语切换原语 小结 什么是进程控制 控制进程的状态变换 总览 如何实现进程控制? 原语实现 假设不是原…

离线直线度测量仪的三种类型

智能型离线直线度测径仪主要用于金属棒材、管材、陶瓷管材等产品在生产节拍时间充裕时的直径和直线度检测。测量方便,自动将检测数据显示于显示屏上。 离线直线度测量仪使用前,设置产品规格,在更换轧材规格时,在设置一次&#xff…

强化学习:MuJoCo机器人强化学习仿真入门(1)

声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…

【MATLAB源码-第123期】基于matlab的SSK(空间位移键控)调制和QSSK(正交空间位移键控)调制误码率对比。

操作环境: MATLAB 2022a 1、算法描述 1. SSK(空间位移键控): - 基本原理:SSK是一种MIMO(多输入多输出)系统中的调制技术。它通过选择性地激活不同的发送天线来传输信息。在每个时间槽&…

第十三回 赤发鬼醉卧灵官殿 晁天王认义东溪村-FreeBSD 下编辑文件ee 用法

话说雷横绑了一个大汉,先押到晁保正庄上讨些点心吃。这东溪村的保正叫晁盖,人称他托塔天王。晁盖热情接待了雷横和士兵们,自己却趁着他们喝酒的时候尿遁去看那大汉。原来那大汉就是来找晁保正的,于是谎称他是晁盖的外甥&#xff0…

【K8S 云原生】K8S的包包管理器-helm

目录 一、helm概念 1、什么是helm 2、helm的概念: 二、实验部署: 1、安装helm: 2、对chart仓库的基本使用: 2.1、查看和更新chart仓库 2.2、安装chart 2.3、卸载chart: 3、helm自定义模版: 3.1、…

【Linux】【实战系列】10 分钟掌握日常开发中 Linux 网络处理相关命令

文章目录 lsofnetstatpingnslookupsshssh-keygenscpsftp 网络工具 curl网络工具 wget最后个人简介 hello,大家好,我是 Lorin,上一期和大家分享一期日常开发中常用的 Linux 文件和文本命令实战教学,这一期给大家带来常用的网络处理…

k8s部署Ingress

前提:有自备的域名,没有域名可用主机配置的域名解析代替测试 #主机配置的域名 vi /etc/hosts #追加以下内容 127.0.0.1 kuboard1、部署Ingress vi deploy.yaml #输入以下内容apiVersion: v1 kind: Namespace metadata:labels:app.kubernetes.io/instan…

git使用指南——以gitlab为例

注册gitlab 自行注册 新建项目 选择新建一个空白的项目 上传项目 clone项目地址到本地 执行完之后,会在目录下生成如下内容:进入里面,选择.git,要上传的内容(资料或代码复制到该目录下):…

华夏基金“冰火两重天”:产品增量不增值,靠什么赢得用户?

近日,华夏基金发布关于华夏野村日经225交易型开放式指数证券投资基金(QDII)(下称“华夏野村日经ETF”)二级市场交易价格溢价风险提示及临时停牌公告。 公告内容显示,华夏野村日经ETF二级市场交易价格明显高…

Prometheus 架构全面解析

在本指南中,我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。 此外,在当今世界,可观…

如何使用宝塔面板搭建Discuz论坛服务并结合内网穿透远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board(以下简称 Discuz!)是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上&a…