☆ git reset

场景1:本地开发环境,已提交N个commit、但尚未push,希望:①丢弃本地所有的更改,代码强制回退到某个历史版本。

解决办法:git reset --hard HEAD~回退到前N个版本,N=0,1,2....

例如:

git reset --hard HEAD~0,版本不回退,丢弃所有更改。

git reset --hard HEAD~1,以当前commit为基准,回退到前1次commit版本。

git reset --hard HEAD~2,以当前commit为基准,回退到前2次commit版本。

git reset --hard hardbba,回退到commit为hardbba的版本。

场景2:本地开发环境,已提交N个commit、但尚未push,希望:①保留本地所有的更改,撤销最近的若干次提交历史(目的是想让git log干净一些)。

解决办法:git reset --mixed HEAD~回退到前N个版本,N=0,1,2....

git reset --mixed HEAD~1,HEAD指向前1次commit,丢弃最近1次提交历史。比如:C2<--C1<--C0,C0是最近1次提交(前0次),C1是最近2次提交(前1次),C2是最近3次提交(前2次).HEAD~1 指向C1

git reset --mixed hardbba,HEAD指向hardbba(sha-1),丢弃以后的提交历史。

注:对--hard,soft,mixed的说明,

--hard,丢弃工作区的所有更改,回退到和历史版本一模一样的状态。

--mixed,保留工作区的所有更改,HEAD指向回退的版本。

--soft表示重置HEAD到另外一个commit,但也到此为止。如果你指定--soft参数,Git将停止在那里而什么也不会根本变化。这意味着index,working copy都不会做任何变化,所有的在original HEAD和你重置到的那个commit之间的所有变更集都放在stage(index)区域中。

这里有一篇文章讲解的很透彻,供参考:https://www.cnblogs.com/kidsitcn/p/4513297.html

可见,git reset --mixed命令可以起到净化分支提交历史的作用,reset以后,哪些不需要计入历史的改动不会push到remote远端。

其它场景举例:

git reset --hard HEAD~1,回退所有内容到上一个版本 
git reset --hard HEAD~1 MyClazz.java,回退MyClazz.java这个文件的版本到上一个版本 
git reset --soft HEAD~3,所有文件向前回退到第3个版本,保留当前代码更改
git reset --hard origin/master,将本地的状态回退到和远程的一样
git reset 057d,回退到某个版本

git revert HEAD,回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit

git reset命令适用场景详解的更多相关文章

  1. Git学习系列之Windows上安装Git详细步骤(图文详解)

    前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...

  2. Ubuntu下Git从搭建到使用详解

    Ubuntu下Git从搭建到使用详解 一.git的搭建 (1).sudo apt-get update (2).sudo apt-get -y install git 符:安装最新版本方法: add- ...

  3. git reset命令学习

    我们在使用git进行版本管理的时候,如果遇到需要回退代码的情况,一般会用 git reset 命令,不过这个命令还有几个参数,这篇文章就来详解一下. 先来了解一下 git 大致的工作流程,配合这张图会 ...

  4. git概念及工作流程详解

    git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...

  5. ping命令执行过程详解

    [TOC] ping命令执行过程详解 机器A ping 机器B 同一网段 ping通知系统建立一个固定格式的ICMP请求数据包 ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运 ...

  6. Linux命令工具 top详解

    Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...

  7. 以太坊客户端Geth命令用法-参数详解

    Geth在以太坊智能合约开发中最常用的工具(必备开发工具),一个多用途的命令行工具. 熟悉Geth可以让我们有更好的效率,大家可收藏起来作为Geth命令用法手册. 本文主要是对geth help的翻译 ...

  8. Linux常用命令及部分详解

    1.总结部分 常用指令 ls      显示文件或目录 -l            列出文件详细信息l(list) -a            列出当前目录下所有文件及目录,包括隐藏的a(all) m ...

  9. 【Git 学习三】深入理解git reset 命令

    重置命令(git reset)是Git 最常用的命令之一,也是最危险最容易误用的命令.来看看git reset命令用法. --------------------------------------- ...

  10. git reset命令使用

    版本回退 当前有三个commit提交版本commit1commit2commit3Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本上一个版本是HEAD^,上上一个版本是HEAD^^ ...

随机推荐

  1. sqlalchemy+pandas:错误 'OptionEngine' object has no attribute 'execute','str' object has no attribute '_execute_on_connection'

    场景:使用 sqlalchemy+pandas 1.  'OptionEngine' object has no attribute 'execute' import pandas as pd fro ...

  2. pytest设计项目结构

    api目录封装所有的接口 testcases目录写所有的测试用例.conftest全局登录前置操作 data目录测试数据 common或者utils目录.存放公共模块比如读取yml文件.连接数据库.所 ...

  3. 在线访问GET/POST及格式化json工具

    http://coolaf.com/在线访问及格式化json工具谷歌浏览器json插件不是很好实现.安装,替代方案

  4. windos下激活python虚拟环境

    1.从终端中找到解释器的目录 2.cd到Scripts,输入激活命令activate  这样就表示激活成功了

  5. GNOME 窗口添加最大化、最小化按钮

    1.安装工具 使用终端命令安装优化工具 yum install gnome-tweak-tool 2.配置 gnome-tweak-tool 安装完毕后,在应用程序的"工具"中找到 ...

  6. [Oracle19C 数据库管理] 用户与权限管理

    用户管理 用户具有以下属性: 用户名: 不能超过30位.不能包含特殊字符.必须用字符开头.用户名不区分大小写. 认证方式: 最常见的是密码认证. 默认永久表空间: 控制用户可以在哪个表空间里创建对象. ...

  7. python multiprocessing多进程 cannot pickle '_io.TextIOWrapper' object

    Python 3.9.6 在windows下使用multiprocessing多进程报如下错误,但linux下正常 Traceback (most recent call last): File &q ...

  8. 面试官:MySQL一千万数据,怎么快速查询?

    前言 面试官:来说说,一千万的数据,你是怎么查询的? me:直接分页查询,使用limit分页. 面试官:有实操过吗? me:肯定有呀 此刻献上一首<凉凉> 也许有些人没遇过上千万数据量的表 ...

  9. UltiSnips安装及设置

    2022-10-05 10:56:50 星期三 安装了UltiSnips插件,然后开始学习 第一个命令 UltiSnipsEdit 不好使,创建了~/.vim/UltiSnips 还是 can not ...

  10. app对接微信支付(app支付)

    (先补充一下,app唤醒微信支付失败的话,在确保没错的情况下,建议换一个手机或者重新下载微信,不知道是微信缓存还是什么原因) 1.先申请好开发环境 app支付不需要公众号,所以申请好开发商号和开发平台 ...