Git回滚和撤销---吃上后悔药、坐上时光机

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

提交分3步:add、commit、push,回滚和撤销也分3种情况:

  • 撤销add
  • 撤销commit
  • 回滚push,也就是回滚远程仓库的代码
撤销add

这种情况有可能是在 git add 操作的时候一些不必要的文件也加进来了,所以想撤销,重新 add

add 操作前面我们已经学习了,它的本质就是将工作目录中的文件的内容保存到了Git数据库,并把文件名和对应的数据对象这些信息添加到了暂存区中。

由于添加的文件内容已经添加到Git数据库中了,没法删除,所以我们不用管Git数据库中的。我们可以删除暂存区中的文件,以确保不会出现在提交记录中。(那我要是这个文件就是一直不需要提交的,那Git数据库中一直存在着?)

//删除暂存区中的文件记录
git rm --cached 文件名
//或是下面的命令,推荐用下面这种
git reset HEAD 文件名

上面2种方法有什么区别呢?

git rm —cached 是直接删除暂存区中的文件记录,用 git ls-files —stage 命令查看暂存区会发现对应文件的记录被删除了,工作区的内容不会变;

git reset 是把内容恢复到指定的commit提交版本,上述命令中的HEAD就是表示最近一次提交。当文件之前没有提交过时,效果就会等同于上面的命令;如果之前提交记录里有文件的其他版本,就会把暂存区的记录更新到之前的版本,这样以来对应文件内容就是之前的版本。

撤销commit

同样的,执行了commit 命令以后,就已经创建了 commit对象,并且存入了Git仓库中,存入了就不能被删除了。

那撤销commit 本质是什么?

之前我们已经学习过,commit的过程就是根据暂存区的内容,创建一个 commit 对象存入Git仓库,同时这个commit 对象保存了上一个 commit 对象的信息,这样就有了提交历史记录,与此同时更新当前分支指向新的commit。

撤销commit 本质上就是将分支指向上一个commit

只不过有个问题,暂存区中的内容和工作区中的内容要不要跟着改呢?Git可以让我们自己选——分别对应reset 的3个参数:mixed、soft和hard

  • mixed: 这个是默认值,效果是暂存区的内容会被替换,工作区的内容不变(也就是撤销commit,同时撤销add,需要重新add操作);
  • soft:效果是暂存区和工作区的内容都不会变,也就是不撤销 add 操作;
  • hard:这个效果是暂存区的内容会被替换,工作区之前被跟踪的文件内容会被替换
//回滚到上一次提交
git reset --hard HEAD^
//或者
git reset HEAD^ --hard

PS:如果只是想修改刚刚commit时写的提交备注,不用 reset,可以用下面的命令:

//修改最新一次提交的说明信息
git commit --amend -m 新的说明信息
回滚push

首先,这是回滚公共仓库中的代码操作,慎重!

回滚远程仓库实际上就是要将远程仓库中的当前分支引用指向其他的commit

那思路就来了,如果我可以直接操作远程仓库的话,那我直接就在当前分支执行一下 reset 操作就完了。

当然了,咱不能直接操作远程仓库。哈哈…

那我们可不可以更新远程仓库的分支指向的提交呢?这个当然可以,我们每次 push 操作就是在更新远程仓库对应的分支呀!

那另一个思路就来了,我本地回滚一下,然后 push 上去不就行了嘛!

//本地改完以后需要强制推送到远程
git push origin HEAD --force
//这个命令会把当前本地分支的引用强制更新到远程

需要注意的是,要加一个 --force 参数,表示强制更新。


欢迎关注我的公众号AntDream查看更多精彩文章!

AntDream

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

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

相关文章

Python机器学习分类算法(五)-- 最近邻算法(k-Nearest Neighbors,KNN)

最近邻算法原理 k-最近邻(k-Nearest Neighbors,KNN)算法是一种基本的机器学习分类和回归算法。在分类问题中,KNN通过测量不同特征值之间的距离来进行分类。它的工作原理是:存在一个样本数据集合,也称作训练…

哈尔滨等保的定级备案

哈尔滨等保的定级备案是确保信息安全,保障国家和人民利益的重要措施。在当前信息化社会,信息安全已成为国家发展的重要支撑,哈尔滨等保的定级备案工作显得尤为关键。本文将从哈尔滨等保定级备案的背景、定级标准、备案流程、实施意义等方面进…

Electron快速入门(一):用VS Code快速创建html+js+css编写的项目

创建一个文件夹(例如:start或者create-electron 都是小写英文字母有的插件才不会报错),并进入该文件夹,打开 vscode创建3个文件: 1. 名为 main.js 的文件是主进程 // main.js//用于控制应用程序寿命和创建…

如何把模糊的图片修复变清晰,怎么做?有那些方法?

模糊照片怎么修复清晰?有些照片可能会因为保存不当或其他原因而变得模糊,这些照片删掉又觉得可惜,那么如何让这些照片焕然一新呢?今天就给大家分享几种可以将这些珍贵的模糊照片修复为高清照片的方法。接下来,给大家演…

PostgreSQL源码分析——pg_basebackup

涉及到的代码主要在src/backend/replication以及bin/pg_basebackup中。 我们知道pg_basebackup是一个进行基础备份的工具,除了使用这个工具,还可以用底层API的方式进行基础备份,主要过程如下: 连接到数据库执行select pg_start_…

vue3面试题及答案

1、Vue3 出现解决了什么问题?它有哪些优势? Vue2 代码模式下存在的几个问题: 随着功能增加,复杂的组件代码越来越多,变得难以维护。主要原因是 vue2 通过选项 式API组织的代码,一个逻辑功能可能有多处代…

WPF——Binding

一、作用 将Window GUI的运行机理从 “事件驱动” 转变为 “数据驱动”。将UI界面与业务逻辑解耦,使得改动一个而无需改动另一个。数据逻辑层自成体系,使得无需借助UI也可进行单元测试。 二、基础 1. Binding源模板 Binding包括源与目标,源…

揭示数据库内核的奥秘--手写数据库toadb开源项目

揭示数据库内核的奥秘–手写数据库toadb 数据为王的时代 在信息化时代,数据已成为企业和应用不可或缺的核心,而数据库不仅是数据的仓库,更是支撑业务决策、系统运行的基石。对于求职者而言,掌握数据库知识已成为求职市场上的必考…

MinIO Enterprise Cache:实现超性能的分布式 DRAM 缓存

随着计算世界的发展和 DRAM 价格的暴跌,我们发现服务器配置通常配备 500GB 或更多的 DRAM。当您处理大型部署时,即使是那些具有超高密度 NVMe 驱动器的部署,这些服务器上的服务器数量乘以 DRAM 也会迅速增加,通常达到几 TB。该 DR…

详细分析Oracle日期和时间的基本命令

目录 1. 基本类型2. 常用函数3. Demo 1. 基本类型 Oracle支持不同的日期格式模型,其中包括: ISO 8601: YYYY-MM-DDTHH:MI:SS,例如2024-06-20T14:30:00Oracle内部格式: DD-MON-YYYY HH:MI:SS AM,例如20-JUN-2024 02:30:00 PM DA…

【Golang - 90天从新手到大师】Day11 - 包的管理

系列文章合集 Golang - 90天从新手到大师 Go语言中包的使用 Go语言使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传…

大型语言模型在AMD GPU上的推理优化

Large language model inference optimizations on AMD GPUs — ROCm Blogs 大型语言模型(LLMs)已经改变了自然语言处理和理解,促进了在多个领域中的众多人工智能应用。LLMs在包括AI助手、聊天机器人、编程、游戏、学习、搜索和推荐系统在内的…

Linux管道与重定向

管道 是进程通信的方法之一,在Linux中用命令1|命令2的形式表示,将前一个命令的结果作为后续命令的参数进行输入,也有tee管道,可以进行多次筛选,即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…

windows常见问题

文章目录 Windows下常见问题1. 修改hosts文件2. win10系统卸载edge浏览器 Windows下常见问题 1. 修改hosts文件 hosts文件位置:C:\Windows\System32\drivers\etc\hosts 随便打开一个文件夹,然后在地址栏中输入上面的路径,然后选择使用txt编…

【AI应用探讨】— 盘古大模型应用场景

目录 一、自然语言处理领域 智能客服 机器翻译 语音识别 二、计算机视觉领域 图像分类 目标检测 图像分割 图像生成 三、科学计算领域 气象预测 矿山安全 铁路检测 药物研发 一、自然语言处理领域 智能客服 利用盘古NLP大模型的语言理解和生成能力,提…

基于AT32_Work_Bench配置AT32工程

基于AT32_Work_Bench配置AT32工程 ✨AT32_Work_Bench工具是用来给AT32 MCU快速构建外设初始化工程软件,类似STM32的STM32CubeMX工具软件。 📍AT32 TOOL系列工具下载地址:https://www.arterytek.com/cn/support/index.jsp?index4&#x1f3f7…

INFINI Labs 助力开源与教育:免费许可证计划全面升级

在数字化浪潮席卷全球的今天,INFINI Labs 深刻认识到开源项目和教育机构在技术创新与人才培养中的核心作用。因此,我们郑重推出全新升级的免费许可证计划,旨在全球范围内为开源社区和教育界提供有力支持,共同推动软件生态的繁荣与…

空压机节能元宇宙:未来工业能源效率的革命

随着全球工业化进程的加速,能源消耗和环境保护已成为全球关注的焦点。在众多工业设备中,空压机作为一种重要的动力设备,其能耗问题尤为突出。为了实现节能减排和可持续发展,探索空压机的节能潜力和创新应用显得尤为重要。在这一背…

什么是数据库?从零开始了解数据库基础概念

什么是数据库?从零开始了解数据库基础概念 相信大家在日常生活中都听到过大数据,数据这个东西越来越火,比如交通大数据、旅游大数据等,,,数据成为了企业决策和业务运作的关键元素。而管理这些庞大而复杂的…

14、顺时针打印矩阵

题目: 顺时针打印矩阵 描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如, 如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字:1,2,3,4,8,1…