Git学习笔记:版本回滚
文章目录
- 回到过去:开启新时间线,时间分叉路口
- 1. 回溯开发
- 2. 临时恢复特性
- 3. 实验性开发
- 4. 分支维护和发布
- 5. 调试历史问题
- 类比推理:
- 方法:
- 1. 临时查看旧版本
- 2. 永久回滚到旧版本
- 3. 创建新的分支指向旧版本
回到过去:开启新时间线,时间分叉路口
创建新的分支指向旧版本的操作通常在以下几种情况下会用到:
1. 回溯开发
如果你在当前分支上进行了一些开发工作,但后来发现需要基于一个较早的提交修复问题或重新实现某个功能,而又不想影响当前正在进行的工作。这时可以基于旧版本创建一个新的分支,在新分支上解决问题后再合并回主干。
2. 临时恢复特性
有时候,你可能已经删除或修改了一个功能,但用户要求临时恢复这个旧版本的功能以满足紧急需求,同时不影响现有开发进度。此时,基于包含该功能的旧版本创建分支,并提供给用户使用。
3. 实验性开发
开发者可能想基于过去某个稳定的版本进行实验性的开发或者重构,为了不影响主分支的稳定性,会选择创建一个基于旧版本的新分支进行尝试。
4. 分支维护和发布
在软件开发中,可能会有多个并行的版本线,比如维护老版本的同时开发新版本。当需要为旧版本发布补丁时,可以通过创建一个指向旧版本的分支来进行修复和更新。
5. 调试历史问题
当遇到难以定位的问题并且怀疑是最近的更改引入的 bug 时,可以基于过去的某个稳定版本创建分支来重现问题、分析原因以及测试解决方案。
总之,通过基于旧版本创建新分支的方式,可以避免直接修改现有分支的历史记录,从而保证了对现有开发工作的安全性和可追溯性。
类比推理:
- 在过去犯下的错误,回到过去弥补,不要影响当下。因为即使回到过去执行的任务失败,对现在的时间线也不会有任何影响,这就是为什么要开启传送门回到过去执行一些任务。是为了保护现在。对应5
- 当过去的人发来消息,说要对过去的时间线进行维护时,需要开启传送门。对应4
- 多样性,如果在当下不知道一些做法会产生什么影响时,可以开启传送门,到过去创建n条故事线,以并行展开多项研究,从而判断出哪些是有价值的研究,对于有价值的研究可以应用到现在。指导自己今后的发展方向。用到了任务外包机制。有外包公司在过去的时间线进行多项尝试。对应3
- 复活机制:当现在的时局,一些人已经死亡,而我们想要用到这些亡人的能力,就需要回到过去,找到他们并借用他们的能力。这些能力可能是暂时使用,应急的。因为,之所以他们会判死刑,一定是对当下和未来有合理的考虑,不排除会有失误,所以这个机制正是用来弥补,当下和未来可能会犯下的错误。对应2
- 场景重现:当下一些环境已经改变,无法满足一些技能的启动条件时,可以开启传送门,调用当时的环境来触发这个技能。对应1
归根结底:一切需要回滚的需求,都是为了保护当下。因为当下的稳定,意味着未来的确定。
方法:
在 Git 中回滚版本(即撤销到某个历史提交)可以使用以下几种方法:
1. 临时查看旧版本
如果只是想查看或测试某个旧版本,但不希望永久性地更改当前工作区的状态,可以使用 git checkout 命令加上具体的提交哈希值(SHA-1)。
git checkout <commit-hash>
这将使你的工作目录和暂存区与指定的提交保持一致,但不会改变HEAD指针的位置。一旦你完成了查看或测试,你可以切换回原来的分支,这会恢复到该分支的最新状态。
2. 永久回滚到旧版本
要永久性地回滚到一个特定的历史提交,并且抛弃之后的所有提交,可以使用以下步骤:
-
确保你没有未提交的更改(如果有,先用
git stash或git commit处理)。 -
使用
git reset --hard命令回退到指定提交。git reset --hard <commit-hash>注意:
--hard参数会将 HEAD、索引(index/staging area)以及工作目录都更新到指定的提交状态,这将丢弃所有在该提交后做出的更改。 -
推送这个更改到远程仓库(如果需要)。由于默认情况下 Git 不允许强制推送历史更改,你需要添加
-f或--force参数来覆盖远程分支:git push origin <branch-name> -f警告: 强制推送可能会对其他协作者产生影响,请谨慎操作,并确保团队成员对此变更知情。
3. 创建新的分支指向旧版本
如果不想修改当前分支的历史记录,而是想基于旧版本创建一个新的分支:
git checkout -b new_branch <commit-hash>
这样就会创建并切换到名为 new_branch 的新分支,其内容对应于指定提交的状态。然后你可以在这个新分支上继续开发。
选择哪种方式取决于你的具体需求和场景,务必谨慎对待可能影响到其他团队成员的操作。
相关文章:
Git学习笔记:版本回滚
文章目录 回到过去:开启新时间线,时间分叉路口1. 回溯开发2. 临时恢复特性3. 实验性开发4. 分支维护和发布5. 调试历史问题类比推理: 方法:1. 临时查看旧版本2. 永久回滚到旧版本3. 创建新的分支指向旧版本 回到过去:开…...
OpenCV图像的基本操作
图像的基本操作(Python) 素材图 P1:die.jpg P2:cool.jpg V:rabbit.mp4, 下载地址 读取展示-图像 import cv2img_1 cv2.imread(./die.jpg) # default cv2.IMREAD_COLOR print("die.jpg shape(imre…...
小白水平理解面试经典题目LeetCode 594 Longest Harmonious Subsequence(最大和谐字符串)
594 最大和谐字符串 这道题属于字符串类型题目,解决的办法还是有很多的,暴力算法,二分法,双指针等等。 题目描述 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums …...
Vue-35、Vue中使用ref属性
1、ref属性 2、代码 <template><div id"app"> <!-- <img alt"Vue logo" src"./assets/logo.png">--><h1 v-text"msg" ref"title"></h1><button click"showDOM" ref&…...
网络通信(15)-C#TCP客户端掉线重连实例
本文上接前面的文章使用Socket在C#语言环境下完成TCP客户端的掉线重连实例。 掉线重连需要使用心跳包发送测试网络的状态,进而进入重连循环线程。 前面实例完成的功能: 客户端与服务器连接,实现实时刷新状态。 客户端接收服务器的数据。 客户端发送给服务器的数据。 客…...
React进阶 - 14(说一说”虚拟DOM“中的”Diff算法“)
本章内容 目录 一、了解 Diff 算法二、key 值的重要性三、为什么不建议使用 index 做 key 值 上一节我们初步了解了 React中的”虚拟 DOM“ ,本节我们来说一说”虚拟DOM“中的”Diff算法“ 一、了解 Diff 算法 在上一篇中,我们有讲到:当 st…...
#GPU|LLM|AIGC#集成显卡与独立显卡|显卡在深度学习中的选择与LLM GPU推荐
区别 核心区别:显存,也被称作帧缓存。独立显卡拥有独立显存,而集成显卡通常是没有的,需要占用部分主内存来达到缓存的目的 集成显卡: 是集成在主板上的,与主处理器共享系统内存。 一般会在很多轻便薄型的…...
HCIP-IPV6实验
实验拓扑 实验需求 全网可达 实验思路 配置IP地址 配置路由协议-ospf 配置R2 配置IPV6 配置R2Tunnel 将所有地址引流到Tunnel0/0/0接口 ripng配置 汇总 实验步骤 配置IP地址 以R2为例 [Huawei]sys r2 [r2]int g0/0/0 [r2-GigabitEthernet0/0/0]ip address 12.1.1…...
如何训练和导出模型
介绍如何通过DI-engine使用DQN算法训练强化学习模型 一、什么是DQN算法 DQN算法,全称为Deep Q-Network算法,是一种结合了Q学习(一种价值基础的强化学习算法)和深度学习的算法。该算法是由DeepMind团队在2013年提出的,…...
Springboot注解@Aspect(一)之@Aspect 作用和Aop关系详解
目录 Aspect的使用 配置 作用 通知相关的注解 例子 结果: Aspect作用和Spring Aop关系 示例 标签表达式 Aspect的使用 配置 要启用 Spring AOP 和 Aspect 注解,需要在 Spring 配置中启用 AspectJ 自动代理,但是在 Spring Boot 中&a…...
自动化防DDoS脚本
简介 DDoS (分布式拒绝服务攻击)是一种恶意的网络攻击,旨在通过占用目标系统的资源,使其无法提供正常的服务。在DDoS攻击中,攻击者通常控制大量的被感染的计算机或其他网络设备,同时将它们协调起来向目标系…...
ubuntu怎么查看有几个用户
在Ubuntu中,可以使用以下命令来查看系统中的用户数量: cat /etc/passwd | wc -l这个命令会读取 /etc/passwd 文件中的用户信息,并使用 wc -l 命令来计算行数,即用户数量。 另外,你也可以使用以下命令来查看当前登录到…...
Linux | makefile简单教程 | Makefile的工作原理
前言 在学习完了Linux的基本操作之后,我们知道在linux中编写代码,编译代码都是要手动gcc命令,来执行这串代码的。 但是我们难道在以后运行代码的时候,难道都要自己敲gcc命令嘛?这是不是有点太烦了? 在vs中…...
pcl+vtk(十四)vtkCamera相机简单介绍
一、vtkCamera相机 人眼相当于三维场景下的相机, VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。 相机位置:即相机所在的位置,用方法vtkCamera::SetPosition()设置。 相…...
TS基础知识点快速回顾(上)
基础介绍 什么是 TypeScript? TypeScript,简称 ts,是微软开发的一种静态的编程语言,它是 JavaScript 的超集。 那么它有什么特别之处呢? js 有的 ts 都有,所有js 代码都可以在 ts 里面运行。ts 支持类型支持&#…...
hook(post-receive)无法使用
hook(post-receive)无法使用 为什么无法使用? 只有一个问题:权限不够,你想想,blog.git是一个中转站,咱们要把上传的东西转到blog下面,肯定要有写入操作呀,这个Git仓库的…...
qt学习:tcp区分保存多个客户端
在前面文掌的tcp客服端服务端进行更改 qt学习:Network网络类tcp客户端tcp服务端-CSDN博客https://blog.csdn.net/weixin_59669309/article/details/135842933?spm1001.2014.3001.5501前面的服务端每次有新的客户端连接,就会覆盖掉原来的指针࿰…...
ORM-08-EclipseLink 入门介绍
拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.(手写简易版 mybatis) 1. EclipseLink概述 本章介绍了EclipseLink及其关键特性:包括在EclipseLink中的组件、元数据、应用程序架构、映射和API。 本…...
数据结构之树和二叉树定义
数据结构之树和二叉树定义 1、树的定义2、树的基本概念3、二叉树的定义 数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以…...
大模型学习与实践笔记(十三)
将训练好的模型权重上传到 OpenXLab 方式1: 先将Adapter 模型权重通过scp 传到本地,然后网页上传 步骤1. scp 到本地 命令为: scp -o StrictHostKeyCheckingno -r -P *** rootssh.intern-ai.org.cn:/root/data/ e/opencv/ 步骤2&#…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
