☆ 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. Wix Setting language and code page attributes

    When you localize your MSI package, you'll need to alter your Productand Package elements to suit. T ...

  2. 在windows 7下构建 FTP 服务器

    首先我们在C盘建立两个文件夹,用于发ftp的上传和下载 其次我们找到控制面板>程序>打开或关闭windows功能 进入后找到Internet 信息服务>FTP服务器>确定! 选 ...

  3. 第15周作业--JDBC连接数据库

    编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id.username.password),验证登录是否成功.当登录成功后,将t_user表(id.name.sex. ...

  4. js过滤掉指定html标签

    替换标签 var str = "<p><span style='color:#ccc;'>这是测试标签</span><span>这是测试htm ...

  5. Linux的stat命令结果说明

    There are 3 kind of "timestamps": Access - the last time the file was read Modify - the la ...

  6. maven加载本地的jar包

    方式1 ,通过scope = system的方式加载 <dependency> <groupId>com.sun.jna</groupId> <artifac ...

  7. ObjectARX2020向导创建项目失败,一直显示创建窗口原因

    安装了好多次,查了好多资料,发现是需要将向导的msi文件以管理员权限运行,可以参考下面的链接 https://www.dawnnote.com/237.html

  8. linux内核源码编译加制作rpm包

    本章主要讲解实际操作步骤,具体理论知识可以自行百度 linux内核官网下载:https://cdn.kernel.org/pub/linux/kernel/   (如图) 根据官网发布的信息分析,目前 ...

  9. mysql实训

    MYSQL You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v ...

  10. nodejs发布cesium问题,其他电脑访问发布

    在电脑上安装nodejs后在选择的cesium文件中,按住shift和鼠标右键,打开powershell,输入命令行hs -p 1212,完成cesium的发布,出现两个网址,127.0.0.1:12 ...