【小米的技术分享】拯救程序员的“救命稻草”:Git回滚命令大揭秘!

news2024/11/24 7:32:15

大家好,我是小米。作为一名热爱技术的程序员,经常使用Git进行版本控制是我们的家常便饭。但是,难免会遇到一些意外,比如不小心提交了错误的代码或者合并了错误的分支,这时候就需要用到Git回滚命令了。今天,我就来为大家揭秘Git回滚的神奇力量,帮助大家化解困境。

未提交的情况

  • 当你在本地工作区做出了一些改动,但是还没有提交,突然发现出现了问题,不用担心,Git提供了一些命令来处理这种情况。首先,你可以使用git status命令查看当前工作区的状态,确认是否有需要撤销的改动。如果你想撤销对某个文件的修改,可以使用git checkout -- <filename>命令。这个命令可以将文件恢复到最近一次提交的状态。
  • 如果你希望撤销所有的修改,可以使用git stash命令。这个命令将当前的修改保存到一个临时的存储区域,然后将工作区恢复到最近一次提交的状态。当你需要重新应用这些修改时,可以使用git stash apply命令。

已提交未推送的情况

如果你已经提交了代码,但是还没有推送到远程仓库,那么可以通过修改提交历史来实现回滚。这时候,你可以使用git reset命令。git reset命令有几种不同的选项,常用的有--soft--mixed--hard

  • 使用git reset --soft HEAD^命令可以将HEAD指针指向上一个提交,同时保留之前的改动。这意味着你可以重新提交这些改动或者对其进行修改。
  • 使用git reset --mixed HEAD^命令是git reset命令的默认行为。它将HEAD指针指向上一个提交,并且取消暂存区的改动,但是保留这些改动作为未暂存的修改。这样,你可以重新选择需要提交的改动,并提交新的版本。
  • 使用git reset --hard HEAD^命令是最彻底的回滚方式。它将HEAD指针指向上一个提交,并且彻底丢弃了之前的改动,恢复到上一个提交的状态。请注意,这个操作是不可逆的,所以在执行之前一定要谨慎。

已推送的情况

  • 如果你已经将代码推送到远程仓库,那么回滚就需要谨慎处理了。在这种情况下,推荐使用git revert命令来撤销已经提交的改动。git revert命令会创建一个新的提交,将之前的改动撤销掉。
  • 使用git revert <commit>命令,其中<commit>是你要撤销的提交的哈希值或引用,Git会自动计算出要撤销的改动,并创建一个新的提交。这样做的好处是可以保留提交历史的完整性,同时其他人也能够看到你的回滚操作。

git reset命令

我们已经提到了git reset命令在未推送和已提交未推送的情况下的使用方式。再来进一步了解一下git reset命令。git reset命令的主要作用是移动HEAD指针以及分支指针来改变当前的工作状态。

此外,git reset命令还有一个非常重要的参数,即--hard--soft--mixed。这些参数决定了回滚的方式和对暂存区和工作区的影响。

git revert命令

相对于git reset命令来说,git revert命令更加安全,因为它不会改变历史提交记录,而是创建新的提交来撤销之前的改动。这使得git revert命令在团队协作和公共仓库中更受欢迎。

使用git revert命令可以撤销单个提交或一系列提交,而不影响之前的提交历史。这是因为git revert命令会自动计算需要撤销的改动,并创建一个新的提交来撤销这些改动。

git reset和revert的区别

那么,git resetgit revert有什么区别呢?

  • git reset是回滚提交历史的一种方式,它可以改变当前的提交状态,并且对暂存区和工作区有直接影响。使用git reset会丢失被回滚的提交之后的所有提交历史,因此在团队协作和公共仓库中使用时需要谨慎。
  • git revert是回滚提交改动的一种方式,它会创建一个新的提交来撤销之前的改动,保留提交历史的完整性。使用git revert不会对之后的提交造成影响,因此更安全可靠。

git reset和git revert的适用场景

  • git reset适用于本地仓库的操作,比如回退到之前的某个提交状态,重新提交或修改之前的改动。但请注意,在团队协作和公共仓库中使用时要慎重,避免破坏其他人的提交历史。
  • git revert适用于已经推送到远程仓库的情况,它可以安全地撤销之前的提交改动,并且保留完整的提交历史。使用git revert可以避免对他人提交历史的破坏,并且更容易进行版本控制和合并操作。

END

在使用Git进行版本控制时,回滚命令是我们程序员的“救命稻草”。根据不同的情况,我们可以选择使用git reset或者git revert来实现回滚操作。git reset可以改变提交历史并且对暂存区和工作区有直接影响,而git revert则通过创建新的提交来撤销之前的改动,保留了提交历史的完整性。

无论是在本地仓库还是远程仓库,无论是个人开发还是团队协作,我们都可以根据不同的场景选择适合的回滚方式,从而保证代码的质量和稳定性。希望今天的分享对你有所帮助,如果你有任何问题或者更多的Git技巧想要分享,欢迎在评论区留言,我们一起进步,共同成长!

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”!

 

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

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

相关文章

chrome谷歌浏览器书签不同步的解决办法

背景&#xff1a;多台电脑使用时&#xff0c;发现浏览器书签并没有及时同步&#xff0c;找到最终的解决办法&#xff1a; 第1步&#xff1a;chrome地址栏中输入&#xff1a; chrome://sync-internals/ 第2步&#xff1a;点击 Disable Sync (Clear Data) 点击Request Start 第3…

马上掌握的LayUI树形权限菜单,助力你的权限管理!

目录 一、树形菜单的介绍 1、什么是树形菜单&#xff1f; 二、实现思路流程 三、实现步骤 1、查看数据 1&#xff09;表数据 2&#xff09; 最终效果 2、编程 1&#xff09;实体类编写 2&#xff09;PermissionDao编写&#xff08;难点&#xff09; 第一 在线转json…

vue+springboot基于Web的电子产品销售系统设计与实现 gqon2a

随着人们生活水平的高速发展&#xff0c;电子产品销售方面在近年来呈直线上升&#xff0c;人们也了解到电子产品的实用性&#xff0c;因此电子产品的销售数量也逐年递增&#xff0c;电子产品销售的增加加大了在管理上的工作难度。为了能更好的维护电子产品销售管理秩序&#xf…

Grafana 图形面板定制方案

Grafana 在一个 Panel 中添加多数据源同时展示以及修改通过 transform 修改图表图例的方式。 多个数据在一个折线图中 在 Grafana 中我们可能会希望多个数据在一个Panel 中展示&#xff0c;比如&#xff1a; 通过编辑 Panel 增加 Query 数据我们即可做到&#xff1a;像上面中…

SQL数据库连接类型与常用函数

目录 1. 创建表插入数据 2. 连接类型 2.1 内连接 2.2 外连接 2.2.1 左外连接 2.2.2 右外连接 2.3 交叉连接 2.4 子查询&公用表达式 2.5 UNION连接 3. SQL常用函数 3.1 CASE WHEN函数 3.2 COALESCE函数 3.3 NULLIF函数 3.4 LEAST 和 GREATEST函数 3.5 DISTINCT…

LayUi之树形结构的详解(附有全案例代码)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于LayUi的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一. 什么是树形结构 二.树形结构在什么时…

表格编程之争:Python VS VBA?Excel用户:新编程语言才真香

Python和VBA哪个更好用&#xff1f; Python和VBA是两种不同的编程语言&#xff0c;它们都有自己的特点和优缺点。在表格编程方面&#xff0c;VBA在Excel中的应用非常广泛&#xff0c;可以通过宏来实现自动化操作和数据处理&#xff0c;也可以通过VBA代码来实现自定义函数和界面…

python qt安装软件包

安装 opencv pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/ 安装pyqt5 pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 安装pyqt5-tools pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/

RLHF-基于人类反馈的强化学习

RLHF 文章目录 RLHF强化学习基础回顾为什么要使用基于人类反馈的强化学习大纲RLHF的起源大预言模型中的RLHF案例 ChatGPT RLHF中的技术细节预训练语言模型训练奖励模型基于RL进行微调 RLHF 的未来 强化学习基础回顾 智能体通过采取行动与环境进行交互&#xff0c;并返回状态和奖…

【C语言督学营 第十八天】考研408排序大题初探(将排序思想融入题目)

文章目录 题目一分析代码实战 题目二分析代码实战 补充(快排与归并)数据结构大题注意点&#xff01;&#xff01;&#xff01;(评分标准) 题目一 分析 (1&#xff09;算法的基本设计思想 由题意知&#xff0c;将最小的nl2个元素放在Ai中&#xff0c;其余的元素放在A2中&#x…

FreeRTOS实时操作系统(十三)任务通知

系列文章目录 文章目录 系列文章目录任务通知任务通知值和通知状态任务通知值通知状态 任务通知API函数发送通知函数接收通知函数 实验测试模拟二值信号量实验模拟计数型信号量模拟事件标志组实验模拟消息邮箱实验 任务通知 任务通知&#xff1a;用来通知任务的&#xff0c;任…

ATMEGA16 Proteus仿真自动人体感应电风扇DS18B20温度 -0069

ATMEGA16 Proteus仿真自动人体感应电风扇DS18B20温度 -0069 Proteus仿真小实验&#xff1a; ATMEGA16 Proteus仿真自动人体感应电风扇DS18B20温度 -0069 功能&#xff1a; Protues版本&#xff1a;7.8 程序编写&#xff1a;ICCAVR:7.12 硬件组成&#xff1a;ATMEGA16单片机…

嵌入式开发之编码器速度采集

光电编码器&#xff0c;是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。这是应用最多的传感器&#xff0c;光电编码器是由光源、光码盘和光敏元件组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴&#xff0c;…

spark和zeppelin认证不一致:Only one of --proxy-user or --principal can be provided

spark和zeppelin认证不一致&#xff1a;Only one of --proxy-user or --principal can be provided 如果配置principal认证方式&#xff0c;zeppelin走的是hadoop权限&#xff0c;如果配置proxy-user认证方式&#xff0c;zeppelin走的是当前登录用户的权限&#xff08;ranger控…

GitHub上cambel的ur3项目调试经验

按照https://github.com/cambel/ur3/wiki/Compile-from-source配置环境时&#xff0c;遇到以下问题&#xff1a; catkin clean时报错 [clean] Error: The current or desired workspace could not be determined. Please run catkin clean from within a catkin workspace or…

【学会动态规划】第 N 个泰波那契数(1)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 4. 空间优化 写在最后 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟…

MySQL 中索引是如何实现的,有哪些类型的索引,如何进行优化索引

MySQL 中的索引 前言 上篇文章聊完了 MySQL 中的锁&#xff0c;这里接着来看下 MySQL 中的索引。 一般当我们数据库中的某些查询比较慢的时候&#xff0c;正常情况下&#xff0c;一顿分析下来&#xff0c;大多数我们会考虑对这个查询加个索引&#xff0c;那么索引是如何工作的呢…

从零开始的前后端分离项目学习(前后端从零环境搭建)

一、 前后端分离介绍&#xff1a; 前端独立编写客户端代码&#xff08;用户交互数据展示&#xff09;&#xff0c;后端独立编写服务端代码&#xff08;提供数据处理接口&#xff09;&#xff0c;并提供数据接口就行。 前端通过Ajax访问后端数据借口&#xff0c;将model展示到…

使用VESD脉冲离子风机5年内至少可节省一半的维护成本

之前的文章有给大家详细介绍过&#xff0c;来自VESD的脉冲离子风机&#xff0c;它有着特殊的设计&#xff1a;插拔式结构和可水洗针架&#xff0c;因此对我们的很多客户来说&#xff0c;这款风机性价比是非常高的。 早在15年以前&#xff0c;VESD就对市面上大部分风机进行过测试…

解决Google浏览器网页覆盖问题

在使用 Google 进行搜索的时候出现打开新页面会覆盖当前页面的问题 针对此问题&#xff0c;解决方法如下&#xff1a; 1、首先在浏览器的地址栏中随便搜索内容 2、页面的 右上角有个⚙️的设置图标&#xff0c;点进去 点击 “查看所有设置” 3、在结果打开方式中进行勾选 设…