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

Git学习笔记:版本回滚

文章目录

  • 回到过去:开启新时间线,时间分叉路口
    • 1. 回溯开发
    • 2. 临时恢复特性
    • 3. 实验性开发
    • 4. 分支维护和发布
    • 5. 调试历史问题
    • 类比推理:
  • 方法:
    • 1. 临时查看旧版本
    • 2. 永久回滚到旧版本
    • 3. 创建新的分支指向旧版本

回到过去:开启新时间线,时间分叉路口

创建新的分支指向旧版本的操作通常在以下几种情况下会用到:

1. 回溯开发

如果你在当前分支上进行了一些开发工作,但后来发现需要基于一个较早的提交修复问题或重新实现某个功能,而又不想影响当前正在进行的工作。这时可以基于旧版本创建一个新的分支,在新分支上解决问题后再合并回主干。

2. 临时恢复特性

有时候,你可能已经删除或修改了一个功能,但用户要求临时恢复这个旧版本的功能以满足紧急需求,同时不影响现有开发进度。此时,基于包含该功能的旧版本创建分支,并提供给用户使用。

3. 实验性开发

开发者可能想基于过去某个稳定的版本进行实验性的开发或者重构,为了不影响主分支的稳定性,会选择创建一个基于旧版本的新分支进行尝试。

4. 分支维护和发布

在软件开发中,可能会有多个并行的版本线,比如维护老版本的同时开发新版本。当需要为旧版本发布补丁时,可以通过创建一个指向旧版本的分支来进行修复和更新。

5. 调试历史问题

当遇到难以定位的问题并且怀疑是最近的更改引入的 bug 时,可以基于过去的某个稳定版本创建分支来重现问题、分析原因以及测试解决方案。

总之,通过基于旧版本创建新分支的方式,可以避免直接修改现有分支的历史记录,从而保证了对现有开发工作的安全性和可追溯性。

类比推理:

  1. 在过去犯下的错误,回到过去弥补,不要影响当下。因为即使回到过去执行的任务失败,对现在的时间线也不会有任何影响,这就是为什么要开启传送门回到过去执行一些任务。是为了保护现在。对应5
  2. 当过去的人发来消息,说要对过去的时间线进行维护时,需要开启传送门。对应4
  3. 多样性,如果在当下不知道一些做法会产生什么影响时,可以开启传送门,到过去创建n条故事线,以并行展开多项研究,从而判断出哪些是有价值的研究,对于有价值的研究可以应用到现在。指导自己今后的发展方向。用到了任务外包机制。有外包公司在过去的时间线进行多项尝试。对应3
  4. 复活机制:当现在的时局,一些人已经死亡,而我们想要用到这些亡人的能力,就需要回到过去,找到他们并借用他们的能力。这些能力可能是暂时使用,应急的。因为,之所以他们会判死刑,一定是对当下和未来有合理的考虑,不排除会有失误,所以这个机制正是用来弥补,当下和未来可能会犯下的错误。对应2
  5. 场景重现:当下一些环境已经改变,无法满足一些技能的启动条件时,可以开启传送门,调用当时的环境来触发这个技能。对应1

归根结底:一切需要回滚的需求,都是为了保护当下。因为当下的稳定,意味着未来的确定。

方法:

在 Git 中回滚版本(即撤销到某个历史提交)可以使用以下几种方法:

1. 临时查看旧版本

如果只是想查看或测试某个旧版本,但不希望永久性地更改当前工作区的状态,可以使用 git checkout 命令加上具体的提交哈希值(SHA-1)。

git checkout <commit-hash>

这将使你的工作目录和暂存区与指定的提交保持一致,但不会改变HEAD指针的位置。一旦你完成了查看或测试,你可以切换回原来的分支,这会恢复到该分支的最新状态。

2. 永久回滚到旧版本

要永久性地回滚到一个特定的历史提交,并且抛弃之后的所有提交,可以使用以下步骤:

  • 确保你没有未提交的更改(如果有,先用 git stashgit 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学习笔记:版本回滚

文章目录 回到过去&#xff1a;开启新时间线&#xff0c;时间分叉路口1. 回溯开发2. 临时恢复特性3. 实验性开发4. 分支维护和发布5. 调试历史问题类比推理&#xff1a; 方法&#xff1a;1. 临时查看旧版本2. 永久回滚到旧版本3. 创建新的分支指向旧版本 回到过去&#xff1a;开…...

OpenCV图像的基本操作

图像的基本操作&#xff08;Python&#xff09; 素材图 P1&#xff1a;die.jpg P2&#xff1a;cool.jpg V&#xff1a;rabbit.mp4&#xff0c; 下载地址 读取展示-图像 import cv2img_1 cv2.imread(./die.jpg) # default cv2.IMREAD_COLOR print("die.jpg shape(imre…...

小白水平理解面试经典题目LeetCode 594 Longest Harmonious Subsequence(最大和谐字符串)

594 最大和谐字符串 这道题属于字符串类型题目&#xff0c;解决的办法还是有很多的&#xff0c;暴力算法&#xff0c;二分法&#xff0c;双指针等等。 题目描述 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在&#xff0c;给你一个整数数组 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“ &#xff0c;本节我们来说一说”虚拟DOM“中的”Diff算法“ 一、了解 Diff 算法 在上一篇中&#xff0c;我们有讲到&#xff1a;当 st…...

#GPU|LLM|AIGC#集成显卡与独立显卡|显卡在深度学习中的选择与LLM GPU推荐

区别 核心区别&#xff1a;显存&#xff0c;也被称作帧缓存。独立显卡拥有独立显存&#xff0c;而集成显卡通常是没有的&#xff0c;需要占用部分主内存来达到缓存的目的 集成显卡&#xff1a; 是集成在主板上的&#xff0c;与主处理器共享系统内存。 一般会在很多轻便薄型的…...

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算法&#xff0c;全称为Deep Q-Network算法&#xff0c;是一种结合了Q学习&#xff08;一种价值基础的强化学习算法&#xff09;和深度学习的算法。该算法是由DeepMind团队在2013年提出的&#xff0c;…...

Springboot注解@Aspect(一)之@Aspect 作用和Aop关系详解

目录 Aspect的使用 配置 作用 通知相关的注解 例子 结果&#xff1a; Aspect作用和Spring Aop关系 示例 标签表达式 Aspect的使用 配置 要启用 Spring AOP 和 Aspect 注解&#xff0c;需要在 Spring 配置中启用 AspectJ 自动代理&#xff0c;但是在 Spring Boot 中&a…...

自动化防DDoS脚本

简介 DDoS &#xff08;分布式拒绝服务攻击&#xff09;是一种恶意的网络攻击&#xff0c;旨在通过占用目标系统的资源&#xff0c;使其无法提供正常的服务。在DDoS攻击中&#xff0c;攻击者通常控制大量的被感染的计算机或其他网络设备&#xff0c;同时将它们协调起来向目标系…...

ubuntu怎么查看有几个用户

在Ubuntu中&#xff0c;可以使用以下命令来查看系统中的用户数量&#xff1a; cat /etc/passwd | wc -l这个命令会读取 /etc/passwd 文件中的用户信息&#xff0c;并使用 wc -l 命令来计算行数&#xff0c;即用户数量。 另外&#xff0c;你也可以使用以下命令来查看当前登录到…...

Linux | makefile简单教程 | Makefile的工作原理

前言 在学习完了Linux的基本操作之后&#xff0c;我们知道在linux中编写代码&#xff0c;编译代码都是要手动gcc命令&#xff0c;来执行这串代码的。 但是我们难道在以后运行代码的时候&#xff0c;难道都要自己敲gcc命令嘛&#xff1f;这是不是有点太烦了&#xff1f; 在vs中…...

pcl+vtk(十四)vtkCamera相机简单介绍

一、vtkCamera相机 人眼相当于三维场景下的相机&#xff0c; VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕、图像等。 相机位置&#xff1a;即相机所在的位置&#xff0c;用方法vtkCamera::SetPosition()设置。 相…...

TS基础知识点快速回顾(上)

基础介绍 什么是 TypeScript&#xff1f; TypeScript&#xff0c;简称 ts&#xff0c;是微软开发的一种静态的编程语言&#xff0c;它是 JavaScript 的超集。 那么它有什么特别之处呢? js 有的 ts 都有&#xff0c;所有js 代码都可以在 ts 里面运行。ts 支持类型支持&#…...

hook(post-receive)无法使用

hook&#xff08;post-receive&#xff09;无法使用 为什么无法使用&#xff1f; 只有一个问题&#xff1a;权限不够&#xff0c;你想想&#xff0c;blog.git是一个中转站&#xff0c;咱们要把上传的东西转到blog下面&#xff0c;肯定要有写入操作呀&#xff0c;这个Git仓库的…...

qt学习:tcp区分保存多个客户端

在前面文掌的tcp客服端服务端进行更改 qt学习&#xff1a;Network网络类tcp客户端tcp服务端-CSDN博客https://blog.csdn.net/weixin_59669309/article/details/135842933?spm1001.2014.3001.5501前面的服务端每次有新的客户端连接&#xff0c;就会覆盖掉原来的指针&#xff0…...

ORM-08-EclipseLink 入门介绍

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.&#xff08;手写简易版 mybatis&#xff09; 1. EclipseLink概述 本章介绍了EclipseLink及其关键特性&#xff1a;包括在EclipseLink中的组件、元数据、应用程序架构、映射和API。 本…...

数据结构之树和二叉树定义

数据结构之树和二叉树定义 1、树的定义2、树的基本概念3、二叉树的定义 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发&#xff0c;分析和研究计算机加工的数据的特性&#xff0c;以…...

大模型学习与实践笔记(十三)

将训练好的模型权重上传到 OpenXLab 方式1&#xff1a; 先将Adapter 模型权重通过scp 传到本地&#xff0c;然后网页上传 步骤1. scp 到本地 命令为&#xff1a; scp -o StrictHostKeyCheckingno -r -P *** rootssh.intern-ai.org.cn:/root/data/ e/opencv/ 步骤2&#…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用

摘要 神经影像技术对医学科学产生了深远的影响&#xff0c;推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下&#xff0c;基于神经血管耦合现象的多模态神经影像方法&#xff0c;通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里&#xff0c;本研…...

GB/T 43887-2024 核级柔性石墨板材检测

核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标&#xff1a; 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...