git reset命令适用场景详解
☆ 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命令适用场景详解的更多相关文章
- Git学习系列之Windows上安装Git详细步骤(图文详解)
前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...
- Ubuntu下Git从搭建到使用详解
Ubuntu下Git从搭建到使用详解 一.git的搭建 (1).sudo apt-get update (2).sudo apt-get -y install git 符:安装最新版本方法: add- ...
- git reset命令学习
我们在使用git进行版本管理的时候,如果遇到需要回退代码的情况,一般会用 git reset 命令,不过这个命令还有几个参数,这篇文章就来详解一下. 先来了解一下 git 大致的工作流程,配合这张图会 ...
- git概念及工作流程详解
git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...
- ping命令执行过程详解
[TOC] ping命令执行过程详解 机器A ping 机器B 同一网段 ping通知系统建立一个固定格式的ICMP请求数据包 ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运 ...
- Linux命令工具 top详解
Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...
- 以太坊客户端Geth命令用法-参数详解
Geth在以太坊智能合约开发中最常用的工具(必备开发工具),一个多用途的命令行工具. 熟悉Geth可以让我们有更好的效率,大家可收藏起来作为Geth命令用法手册. 本文主要是对geth help的翻译 ...
- Linux常用命令及部分详解
1.总结部分 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) m ...
- 【Git 学习三】深入理解git reset 命令
重置命令(git reset)是Git 最常用的命令之一,也是最危险最容易误用的命令.来看看git reset命令用法. --------------------------------------- ...
- git reset命令使用
版本回退 当前有三个commit提交版本commit1commit2commit3Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本上一个版本是HEAD^,上上一个版本是HEAD^^ ...
随机推荐
- 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 ...
- 在windows 7下构建 FTP 服务器
首先我们在C盘建立两个文件夹,用于发ftp的上传和下载 其次我们找到控制面板>程序>打开或关闭windows功能 进入后找到Internet 信息服务>FTP服务器>确定! 选 ...
- 第15周作业--JDBC连接数据库
编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id.username.password),验证登录是否成功.当登录成功后,将t_user表(id.name.sex. ...
- js过滤掉指定html标签
替换标签 var str = "<p><span style='color:#ccc;'>这是测试标签</span><span>这是测试htm ...
- Linux的stat命令结果说明
There are 3 kind of "timestamps": Access - the last time the file was read Modify - the la ...
- maven加载本地的jar包
方式1 ,通过scope = system的方式加载 <dependency> <groupId>com.sun.jna</groupId> <artifac ...
- ObjectARX2020向导创建项目失败,一直显示创建窗口原因
安装了好多次,查了好多资料,发现是需要将向导的msi文件以管理员权限运行,可以参考下面的链接 https://www.dawnnote.com/237.html
- linux内核源码编译加制作rpm包
本章主要讲解实际操作步骤,具体理论知识可以自行百度 linux内核官网下载:https://cdn.kernel.org/pub/linux/kernel/ (如图) 根据官网发布的信息分析,目前 ...
- mysql实训
MYSQL You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v ...
- nodejs发布cesium问题,其他电脑访问发布
在电脑上安装nodejs后在选择的cesium文件中,按住shift和鼠标右键,打开powershell,输入命令行hs -p 1212,完成cesium的发布,出现两个网址,127.0.0.1:12 ...