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足够强大,只要你稍微注意一点,不会出现找不回代码的情况,因此可以放心大胆地随意尝试。

git add 回滚_Git的reset命令详解相关推荐

  1. git reset 命令详解(一)—— Git 学习笔记 07

    git reset 命令详解(一) 简而言之,git reset 命令是用来将当前 branch 重置到另外一个 commit 的,这个动作可能同时影响到 index 以及 work director ...

  2. git reset 命令详解(二)—— Git 学习笔记 08

    git reset 命令详解(二) 上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法--后面跟一个路径(或文 ...

  3. git reset 命令详解 git revert命令详解。

    git reset 命令详解 reset命令 介绍 参数 补救 git revert命令 revert说明 举例: 命令 reset命令 介绍 git reset 命令格式为: git reset [ ...

  4. git连接远程仓库码云及命令详解

    git连接远程仓库码云及命令详解 1.前言 2.码云远程仓库(github同理) 1.注册码云账号 2.新建仓库 3.git工具的安装配置 1.git 工具下载配置 2.SHH公钥配对 4.创建 gi ...

  5. oracle回滚断查询,Oracle回滚段使用查询代码详解

    大批量执行DML语句造成回滚段大量占用,又回退操作,如何直观查询数据回滚情况? 单机环境 查询回滚执行进度 sql;"> select /*+ rule */s.sid,r.name ...

  6. git 代码回滚_git代码版本管理(1)——git版本回滚

    git代码版本管理(1)--git版本回滚 1.问题背景 在利用github.gitlab.Gitee等代码管理器中对代码的管理,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提 ...

  7. git reset命令详解

    开门见山,先抛出一张图,之后再细讲.  首先,先解释下图中的一些名词.  一.名词解释 1. Working Copy:当前工作目录下的文件,一般指,有修改,没有git add,没有git commi ...

  8. Git在项目中40个常用命令详解

    前言 git对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree这样牛X的客户端工具,使得合并代码变的很方便.但找工作面试和一些需彰显个人实力的 ...

  9. 【莫队/树上莫队/回滚莫队】原理详解及例题:小B的询问(普通莫队),Count on a tree II(树上莫队),kangaroos(回滚莫队)

    文章目录 问题引入 介绍莫队算法及其实现过程 时间复杂度 莫队算法适用范围 莫队奇偶优化 普通莫队:小B的询问 树上莫队:SP10707 COT2 - Count on a tree II 回滚莫队: ...

最新文章

  1. python操作hdfs_python 操作hdfs
  2. spark性能优化 -- spark工作原理
  3. 批处理引擎MapReduce程序设计
  4. 20-190-092-安装-Flink集群安装 flink-1.9.0 On Yarn
  5. python哪些系统可以运行_python可以检测它在哪个操作系统下运行吗?
  6. 实现Trie(前缀树)
  7. 请问!退休年龄到了,社保没交够,现在职,公司还可以继续交吗?
  8. java中转为整形的编码_java中Unicode编码转化为中文
  9. 解决文件夹无限嵌套无法删除的问题---最新办法
  10. Python Tricks(十五)—— repeat(字符串重复)
  11. 64位Oracle 11g 使用PL/SQL
  12. 【附PDF下载】2021年上半年信息系统项目管理师上午综合知识真题
  13. tsp问题动态规划python_TSP问题——动态规划
  14. jclasslib插件_JClassLib
  15. JN5169 ZigBee 3.0 协议栈之 ZigBee 网络参数
  16. 13 Python函数进阶
  17. 共享硬盘没有权限访问计算机,win7系统访问磁盘共享没有权限的解决方法
  18. 液晶LCD广告机是什么,主要用途有哪些。广告一体机的种类有哪些。
  19. 计算机中专实训方案,中职学校计算机专业实训模式初探
  20. 定位决定地位,眼界决定境界

热门文章

  1. Pythonic版冒泡排序和快速排序(附:直接插入排序)
  2. 苹果文档 UISearchController的介绍
  3. 大数相乘、大数相加、大数相减Java版本
  4. thinkJava@第五章@隐藏实施过程
  5. 通俗理解 Kubernetes 中的服务,搞懂后真“有趣”
  6. 火遍全国的网络热梗“yyds”,创造者被判刑3年
  7. 全面解析微服务系统监控分层,啃透服务治理核心!
  8. 简直骚操作,ThreadLocal还能当缓存用
  9. 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...
  10. 阿里某员工面试华为后吐槽:面试官太水,反问几句都答不上来