git add 回滚_Git的reset命令详解

2023-11-09

git reset 这个命令是版本控制的精髓,非常实用且常用,真香警告!


一、为什么

我们玩闯关游戏的时候,经常要把游戏进度保存,以便我们随时能够回到那一刻。特别是打BOSS之前,做好保存,发现打不过就马上重来。或者一年半载后,重玩游戏,就可以选择一个保存节点开始游戏,可以随时切换。

我们每一次保存,软件就给当时的游戏场景拍一个全景照片,记录好当下的各种参数。我们选择回溯一个保存节点时,就像是选择从一个全景照片中重新开始。

这便是版本控制的精髓---给你更多条命、更多重来的机会。

二、是什么

git reset 命令是在更改git指针HEAD的指向,具体是更改指向不同的版本号,而不同的版本号就是我们玩游戏时不同时间点的暂存记录。如下图---

三、怎么用

要想用好reset命令,必须深入理解它的三个参数---

--soft,--mixed(默认),--hard

看图说话。

1、--soft参数

git reset --soft

如上图,soft参数是指将本地仓回滚到Y版本,但是暂存区和工作区保持不变。此时本地仓回滚到Y版本号commit完成的那一刻。

2、--mixed参数

git reset --mixed  或者  git reset

这是默认参数。表示本地仓和暂存区,都回滚到Y版本号。工作区代码不受影响。

3、--hard参数

本地仓、暂存区、工作区,三区都回滚。

切记!!!工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了。

此时如何安全回滚,请参考我的上一篇文章的git stash命令。

思来享趣:理解Git的这两件事情,就可以在Git里为所欲为​zhuanlan.zhihu.com

四、使用场景

具体使用的时候,要分清的就是用哪个参数最合适,下面举几个例子。再次提醒,工作区有未提交的改动时,不要用--hard参数。

1、如何撤销一次push?

此时用--soft参数比较合适,只回滚本地仓到上一个版本,然后通过git push -f命令,撤销上次的push,最后更改好代码后重新push。步骤如下---

依次为

git reset --soft HEAD~1  // 将本地仓回滚到上一个版本号
git push origin master -f  // 通过-f命令,将回滚后的版本号强制推送上去,相当于撤销了最新的push
// 修改代码
// 修改好后,重新add,commit,push即可。

2、如何撤销一次commit?

如果你要同时撤销暂存区的话,就用--mixed参数,如果要撤销工作区的修改就用--hard参数,否则用--soft最安全。

git reset --hard HEAD~1  // 慎用--hard参数,除非你知道你自己在做什么

五、组合拳

聪明的你,一定想到了,想要利用好git强大的版本控制功能,要学会使用组合拳,如以下命令---

git stash  // 暂存代码
git reset --参数 版本号
git push --force 

等等

这就需要你多多练习了,不过好在git足够强大,只要你稍微注意一点,不会出现找不回代码的情况,因此可以放心大胆地随意尝试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git add 回滚_Git的reset命令详解 的相关文章

  • JavaScript笔记_this指向

    this 指向问题 普通函数的this由调用规则来确定 而箭头函数的的this 本身没有this 取决于父作用域的this 代码执行后 箭头函数取决于父级作用域的this 只跟随父作用域的this改变而改变 普通函数的this取决于调用方式
  • Tomcat 无法访问,未发送任何数据

    问题描述 直接上图 解决 开启的Tomcat 的cmd窗口不要关闭 访问localhost 8080 试试 8080接口被其它服务占用了 修改8080接口 不要修改为1 1023端口和常用端口3306等 首先关闭Tomcat 双击shutd
  • 【Java】Java基础习题1

    这里写目录标题 1 编译Java应用程序源文件将产生相应的字节码文件 字节码文件的扩展名为 2 Java源程序文件的扩展名为 3 编译Java源代码 java 文件的工具为 4 执行Java字节码 class 文件的工具为 5 main方法
  • Spring Security的十一个拦截器

    目录 一 SecurityContextPersistenceFilter 二 LogoutFilter 三 AbstractAuthenticationProcessingFilter 四 DefaultLoginPageGenerati
  • 基于PaddleOCR的DBNet多分类文本检测网络

    目录 目的 模型网络结构对比 代码实现 1 数据集格式 2 配置文件调整 3 数据预处理 4 模型代码调整 5 添加多分类loss 6 修改db postprocess py 7 修改train py eval py infer det p
  • VS无法定位程序输入点于动态链接库

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 问题原因 前言 我们使用QtCreator创建的工程 使用visual studio 打开 前提是vs中安装了qt vsaddin msvc插件 VS无法定位程序输入点于动态链接库 一
  • 清除mac中自动记录的git用户名和密码

    应用程序 实用工具 双击钥匙串 右上角搜索github 右击选项删除
  • 陀螺研究院

    摘要 产业动态 由建行发起的价值30亿美元数字债券将推迟上市 15国正式签署RCEP 全球规模最大自贸协定达成 浙江省首个产业区块链赋能中心落地宁波江北 越南教育和培训部计划在2021年实施区块链技术颁发文凭 深圳市政务区块链专委会正式揭牌
  • pytorch代码实现之SAConv卷积

    SAConv卷积 SAConv卷积模块是一种精度更高 速度更快的 即插即用 卷积 目前很多方法被提出用于降低模型冗余 加速模型推理速度 然而这些方法往往关注于消除不重要的滤波器或构建高效计算单元 反而忽略了特征内部的模式冗余 原文地址 Sp
  • 图像处理(RGB分离)

    图像处理技术 RGB分离 最近学习了图像处理技术 第一个小工程做的事将一张图片的rgb分离 存为三张图片 就像PS中的RGB通道的三张图片一样 我们先准备两张24位真彩色图片 一张宽度像素为4的倍数 一张则不是 我们来看下它的文件头和信息头
  • js文字朗读

    var u new SpeechSynthesisUtterance function read text speed u text text u lang zh u rate speed speechSynthesis speak u
  • 游戏开发安卓知识杂谈系列:关于下载jdk

    想要下载jdk11 去oracle官网下载jdk 发现jdk13以下的版本需要账号登陆 但是去注册账号发现官网账号无法注册 找了半天 网上说Oracle自java SE 8的某个版本以后 需要进行付费才能下载 两个解决办法 找百度网盘或者第
  • webpack使用(5)之处理CSS

    一 需要引入的loader 1 style loader 主要负责创建style标签 并将标签塞入到文档中 2 css loader 主要负责css解析 3 less loader 负责解析less 二 如何引入css资源 1 安装配置st
  • 【数据结构】哈希表

    散列表 也叫哈希表 是根据关键码值而直接进行访问的数据结构 它通过把关键码值映射到表中一个位置来访问记录 以加快查找的速度 哈希表的核心是合适的hash函数 数据范围 解决冲突的办法 这里通过数字分析法设计哈希函数 链地址法解决从冲突 冲突
  • 2023华为OD机试真题【敏感字段加密/字符串风格】【2023.Q2】

    题目描述 给定一个由多个命令字组成的命令字符串 1 字符串长度小于等于127字节 只包含大小写字母 数字 下划线和偶数个双引号 2 命令字之间以一个或多个下划线 进行分割 3 可以通过两个双引号 来标识包含下划线 的命令字或空命令字 仅包含
  • 【机器学习】通俗易懂决策树(实战篇)python实现(为新患者找到合适的药物)

    决策树 我们将学习一种更流行的机器学习算法 决策树 我们将使用此算法从患者的历史数据以及他们对不同药物的反应大数据中 用训练过的决策树来构建分类模型预测未知患者的类别 或者说为新患者找到合适的药物 导入以下包 numpy as np pan
  • docker快速学习--容器的数据卷--04

    一 数据卷概念 数据卷是宿主机中的一个目录或文件 当容器目录和数据卷目录绑定后 对方的修改会立即同步 一个数据卷可以被多个容器同时挂载 一个容器也可以被挂载多个数据卷 二 数据卷作用 容器数据持久化 外部机器和容器间接通信 数据交互 容器之
  • python进阶--正则表达式(2)

    一 初识正则表达式 为了使计算机具有在文本中检索某种模式的能力 我们引入了正则表达式 正则表达式为高级的文本模式匹配 抽取或者文本形式的搜素和替换功能提供了基础 利用正则表达式能够匹配多个字符串 正则表达式的强大之处在于引入了特殊字符来定义
  • ajax工作原理 前后端交互流程

    一 前后端交互流程 1 服务器 提供某种服务器的机器 计算机 qq音乐 音频服务器 迅雷 文件服务器 qq邮箱 邮件服务器 爱奇艺 视频服务器 谷歌 web服务器 2 前端 访问 服务器的四种方式 1 直接在地址栏输入网址 网页会跳转 全局

随机推荐

  • Java Servlet 简单的登录代码

    需要的jar包 commons beanutils 1 8 0 jar druid 1 0 9 jar spring jdbc 5 0 0 RELEASE jar spring beans 5 0 0 RELEASE jar mysql c
  • C++(19)——智能指针shared_ptr

    shared ptr的概念 shared ptr实现共享式拥有 shared ownership 概念 多个智能指针可以指向相同对象 该对象和其相关资源会在 最后一个引用 reference 被销毁 时候释放 基本原理 智能指针是 几乎总是
  • MySQL数据库学习——SQL分类——DDL

    不能重复创建 可以用if not exists来避免这种情况 比如我要创建一个test的数据库 用if not exists系统就会创建 删除guzifenshisb这个数据库 使用数据库和查询数据库
  • Basic Level 1083 是否存在相等的差 (20分)

    题目 给定 N 张卡片 正面分别写上 1 2 N 然后全部翻面 洗牌 在背面分别写上 1 2 N 将每张牌的正反两面数字相减 大减小 得到 N 个非负差值 其中是否存在相等的差 输入格式 输入第一行给出一个正整数 N 2 N 10 000
  • protobuf

    https www jianshu com p 4b987ef826d3
  • 【前端部署】多个vue项目部署到Linux服务器

    前端部署 多个vue项目部署到Linux服务器 文章目录 前端部署 多个vue项目部署到Linux服务器 前言 一 修改vue项目中配置 1 修改vue config js 2 修改router文件下的index js 3 打包项目 二 修
  • 内存四区:代码区、全局区、栈区、堆区 代码分析

    阅读前请看一下 我是一个热衷于记录的人 每次写博客会反复研读 尽量不断提升博客质量 文章设置为仅粉丝可见 是因为写博客确实花了不少精力 希望互相进步谢谢 文章目录 阅读前请看一下 我是一个热衷于记录的人 每次写博客会反复研读 尽量不断提升博
  • command not found: tensorboard

    zsh command not found tensorboard 问题描述 我的深度学习框架采用的是pytorch 代码中使用tensorboardx来写日志的 之前使用tensorboad可以正常打开日志 但现在提示命令未找到 解决方案
  • 成功解决3dmax中,旋转时透视图可以看穿物体

    成功解决3dmax中 旋转时透视图可以看穿物体 目录 解决问题 解决思路 解决方法 解决问题 成功解决3damx中 旋转时透视图可以看穿物体 解决思路 有可能透视图出了毛病 解决方法 透视图看穿物体时 有可能透视图出了毛病 只需要将切换为正
  • 每日思维模型——管理4R模型

    什么是管理 人是管理的核心要素 通过管理 使人员达成共识 按照流程及规划工作 最终达成目标的系列活动 管人不是目的 发挥人组成的团队效应 高效完成任务才是目的 一 4R法则 4R法则可视为管理下属的总体原则 由四个 R 开头的四个英文单词组
  • 关于UnityHub更换位置后找不到编辑器以及登录界面白屏的问题

    若之前已经有该版本的unity3d 更换位置后显示找不到 可以找出它所在的位置 然后在UnityHub的安装选项中 点击添加已安装版本 该问题就能解决 若显示未登录 且登录界面白屏 可通过以下三个方法解决 关闭hub 在资源管理器中结束un
  • MybatisPlus从入门到精通-三更草堂补充版

    MybatisPlus从入门到精通 基础篇 1 概述 MybatisPlus是一款Mybatis增强工具 用于简化开发 提高效率 它在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率而生 官网 https mp baomid
  • 关于训练平台中Dockerfile与运行文件的编写

    何为Dockerfile 为了给特定的程序提供特定的运行环境 常用的解决办法是就构建镜像 而Dockerfile就是构建镜像的源代码 Docker程序根据这份源代码在镜像中安装 拷贝文件 设置环境变量 Dockerfile文件编写 下面列举
  • svn搭建

    Subversion SVN 是一个开源的版本控制系統 也就是说 Subversion 管理着随时间改变的数据 这些数据放置在一个中央资料档案库 repository 中 这个档案库很像一个普通的文件服务器 不过它会记住每一次文件的变动 这
  • 教你怎样娶比尔.盖茨的女儿

    无意中在网上看见这篇文章 仔细体会 能让人领会很多东西 一位优秀的商人杰克 有一天告诉他的儿子 杰克 我已经决定好了一个女孩子 我要你娶她 儿子 我自己要娶的新娘我自己会决定 杰克 但我说的这女孩可是比尔 盖茨的女儿喔 儿子 哇 那这样的话
  • disruptor_环形缓冲区– Disruptor背后的数据结构

    disruptor 环形缓冲区 Disruptor背后的数据结构 Disruptor是一个高性能的库 用于在线程之间传递消息 该库由LMAX Exchange公司于几年前开发和开源 他们创建了此软件来处理其零售金融交易平台中的巨大流量 超过
  • deep learning 编程作业总结4----调节神经网络之初始化,正则化,梯度校验

    一 初始化参数 神经网络中一个小单元的运算可由 z wx b 和 a g z 这两个式子来概括 在刚开始的时候需要对参数w和b赋初始值 如果赋值为0那么是没有意义的 如果赋值为一个简单随机数 那么会产生梯度爆炸和梯度消失 因此应采用抑梯度异
  • pyqt5-QGraphicsView

    一 QGrahpics框架 这个框架是一个渲染引擎的上层框架 通常也叫Scene View 由QGraphicsview QGrahpicsScene QGraphicsItem三个框架类组成 QGrahpicsView是从原生的QWidg
  • C++11 多线程之 packaged_task

    packaged task是什么 template lt class R class Args gt class packaged task lt fn Args gt packaged task是类模板 定义于future头文件中 它包装
  • git add 回滚_Git的reset命令详解

    git reset 这个命令是版本控制的精髓 非常实用且常用 真香警告 一 为什么 我们玩闯关游戏的时候 经常要把游戏进度保存 以便我们随时能够回到那一刻 特别是打BOSS之前 做好保存 发现打不过就马上重来 或者一年半载后 重玩游戏 就可