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 的新分支,其内容对应于指定提交的状态。然后你可以在这个新分支上继续开发。

选择哪种方式取决于你的具体需求和场景,务必谨慎对待可能影响到其他团队成员的操作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git安装步骤

安装环境&#xff1a;Windows10 64bit 下载 Git网址 &#xff1a;Git - Downloading Package 版本&#xff1a;Git-2.21.0-64-bit 第一步&#xff1a;双击下载后的Git-2.21.0-64-bit.exe&#xff0c;开始安装 安装开始 第二步&#xff1a;选择安装路径&#xff0c;点击[next]…

以史为鉴:1997 年香港股市保卫战对当前 A 股投资的启示与思考

文章目录 惊心动魄:1997 年香港股市保卫战,港府与索罗斯的巅峰对决!以史为鉴:1997 年香港股市保卫战对当前 A 股投资的启示与思考!为什么是8月28日决战?为什么是7829点获胜?香港股市保卫战对判断 A 股底部的启示市场情绪反转指标期货指数先行性其他惊心动魄:1997 年香港…

35.搜索插入位置(力扣LeetCode)

文章目录 搜索插入位置题目描述二分查找暴力 搜索插入位置 题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法…

Linux基础指令大汇总

Linux的指令比较多&#xff0c;在学习的过程中要学会总结和归纳&#xff0c;同时结合实践多多使用&#xff0c;就像学数学一样&#xff0c;不是背过公式就等于掌握的&#xff0c;而是要知道在什么时候用&#xff0c;怎么用才是关键。 这篇文章会列举一系列常用的指令&#xff0…

基于Grafana+Prometheus搭建可视化监控系统实践

基本介绍 Grafana&#xff1a;一个监控仪表系统&#xff0c;可以根据提供的监控数据&#xff0c;生产可视化仪表盘&#xff0c;同时也具有告警通知功能。这里的监控数据来源&#xff0c;目前主要以Prometheus为主&#xff08;也支持其它数据源&#xff09;&#xff0c;每次展现…

React进阶 - 13(说一说 React 中的虚拟 DOM)

本章内容 目录 一、为什么需要”虚拟DOM“二、虚拟 DOM“ 带来的希望三、虚拟 DOM“ 的优势&#xff08;性能大幅度提升 & 跨端应用&#xff09; 上一节我们讲了 state、props与render函数的关系&#xff0c;本节内容开始了解 React中的”虚拟 DOM“ 相关知识。 一、为什…

前后台分离跨域交互

后台处理跨域 安装插件 >: pip install django-cors-headers插件参考地址&#xff1a;https://github.com/ottoyiu/django-cors-headers/项目配置&#xff1a;dev.py # 注册app INSTALLED_APPS [...corsheaders, ]# 添加中间件 MIDDLEWARE [...corsheaders.middleware.…

EasyCVR视频智能监管系统方案设计与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…

Spring 的存储和获取Bean

文章目录 获取 Spring 上下文对象的方式存储 Bean 对象的方式类注解配置扫描路径&#xff08;必须&#xff09;Controller&#xff08;控制器存储&#xff09;Service&#xff08;服务&#xff09;Repository&#xff08;持久层&#xff09;Component&#xff08;工具&#xff…

HCIA-Datacom实验指导手册:3.2 实验二:生成树基础实验

HCIA-Datacom实验指导手册:3.2 实验二:生成树基础实验 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:步骤 1 掌握启用和禁用 STP/RSTP 的方法步骤 2 掌握修改交换机 STP 模式的方法步骤 3 掌握修改桥优先级,控制根桥选举的方法步骤 4 掌握修改端口优先级,控制…

【代码分享】

通讯录2 #define _CRT_SECURE_NO_WARNINGS#include<stdio.h> #include<assert.h> #include<stdlib.h> #include<stdbool.h> #include<string.h>struct contacts {char name[20];int age;char gender[10];char phone[12];char address[40]; }; t…

​LeetCode解法汇总2859. 计算 K 置位下标对应元素的和

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给你一个下…

C语言实战系列二:简单超市收银系统

从一个简单的超市收银系统&#xff0c;我们来练习一个系统如何设计&#xff0c;然后如何实现的思路。 在Ubuntu环境下使用C语言编写一个简单的超市收银系统。以下是一个基本的示例&#xff0c;涵盖了商品管理、购物车、交易处理等功能。 代码 #include <stdio.h> #inc…

css不规则的文本环绕

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>不规则的文本环绕</title><style>.b…

flyway使用配置参数和注意事项介绍

文章目录 业务场景参数介绍initSqlsbaselineOnMigratebaselineVersiontargetvalidateOnMigrate SQL注意事项 业务场景 对于生产环境&#xff0c;随着项目版本迭代&#xff0c;数据库结构也会变动。如果一个项目在多个地方实施部署&#xff0c;且版本不一致&#xff0c;就需要一…

触发器和存储过程的区别

目录 触发器&#xff08;Trigger&#xff09; 定义和用途&#xff1a; 执行方式&#xff1a; 作用范围&#xff1a; 参数传递&#xff1a; 示例&#xff1a; 存储过程&#xff08;Stored Procedure&#xff09; 定义和用途&#xff1a; 执行方式&#xff1a; 作用范围…

CSS之粘性定位

让我为大家介绍一下粘性定位吧&#xff01; 大家应该都了解过绝对定位&#xff0c;它是相对于父级定位 那么粘性定位相对于谁呢&#xff1f; 它相对于overflow:hidden; 如果没找到就会跟fixed固定定位一样&#xff0c;相对于视口 <!DOCTYPE html> <html lang"en…

rust 引用/mut 的所有权

在任意给定时间&#xff0c;要么 只能有一个可变引用&#xff0c;要么 只能有多个不可变引用。 不可变引用&#xff08;shared reference&#xff09;实现了Copy trait&#xff0c;不会发生所有权转移可变引用&#xff08;mutable reference&#xff09;未实现&#xff0c;会发…

C++ 利用容器适配器,仿函数实现栈,队列,优先级队列(堆),反向迭代器,deque的介绍与底层

C 利用容器适配器,仿函数实现栈,队列,优先级队列【堆】,反向迭代器,deque的介绍与底层 一.容器适配器的介绍二.利用容器适配器实现栈和队列1.stack2.queue 三.仿函数介绍1.什么是仿函数2.仿函数的使用3.函数指针的使用1.函数指针的用处2.利用函数指针完成回调3.利用仿函数完成回…

Compose | UI组件(二) | Text() 文本组件

文章目录 Text() 简介Text() 参数说明Text() 显示文字fontSize 文字大小textAlign 文字对齐方式style 文字样式fontFamily 文字字体AnnotatedString 多样式文字maxLines 设置文本单行显示SelectionContainer 选中文字 总结 Text() 简介 显示文字的组件 Text() 参数说明 Comp…