Git重置命令--git reset用法总结

git之reset命令 1.简介 git-reset:将当前的HEAD重置为指定状态,也就是重置顶部commit的引用 2.概要 git reset [-q] [<tree-ish>] [--] <pathspec>…​ git reset [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>] git reset (--patch | -p) [<tree-is... 阅读详情


git reset 是Git最常用的命令,也是最危险最容易误用的命令之一。

一.git reset的用法

git reset有两种用方法:

git reset [-q] [<commit>] [--] <path>
git reset [--soft | --mixed | --hard | --keep | --merge] [-q] [<commit>] 

说明:
"[]"里面的内容为可选项,可以省略;
< commit >表示引用或者commit ID,如果省略,相当于使用HEAD;
path前面使用两个连续的短线(减号),是为了避免引用(后者commit ID)与路径(文件)名相同而发生冲突;
git reset命令能重置工作区的内容,但是不会影响未跟踪的文件。

1.1 第一种用法(包含路径path)

不会重置引用,也不会改变工作区,只是用提交状态下的文件path,替换暂存区里的文件,一般用于取消git add的提交。

1.2 第二种用法(不使用路径path)

这种用法会重置引用,并且根据参数的不同,重置暂存区或者工作区。

对照上图(图片来源:《git权威指南》,图片不是很清楚,注意图片中圆圈的数字),执行git reset命令根据参数的不同,可以执行下面的一个或者多个动作:
(1).替换引用的指向,引用指向新的ID
(2).替换暂存区(index就是暂存区)。替换后,暂存区和引用指向的目录树一致
(3).替换工作区。替换后,工作区与暂存区相同

1.2.1 参数 --hard

git reset --hard <commit>

会执行上面的(1)、(2)、(3)

1.2.2 参数 --soft

git reset --soft <commit>

会执行操作(1)。即:只改变引用指向,不改变暂存区

1.2.3 参数 --mixed

git reset --mixed <commit>
等同于:git reset <cmomit>

如果不使用参数时,默认使用的就是–mixed参数
这个参数会执行操作(1)和(2),即:更改引用的指向和置换暂存区,不更改工作区。
command:git reset
用HEAD指向的目录树重置暂存区,工作区不受影响,相当于对git add的反向操作。引用没改变,是因为原来就是指向HEAD的,相当于没重置。
git reset HEAD等同于 git reset

1.3 总结说明

重置命令的一个用途是修改引用(如master)的游标指向。
在./.git/目录下有一个HEAD文件,使用cat ./.git/HEAD查看文件内容,发现HEAD是指向一个引用refs/heads/xxx(xxx是分支名,如master),重置命令(reset)并没有改变HEAD的指向,改变的是分支游标的变更,HEAD始终指向refs/heads/xxx,但是因为分支游标的改变,所以在用git log 查看时,发现HEAD指向一个新的提交了。这一点是git reset和git checkout的区别,git checkout改变的是HEAD的指向,分支的游标并没有改变。

二.git reset --hard后如何恢复

不小心执行git reset --hard 命令后,暂存区、工作区和引用都变成了节点。想要恢复到最新的节点,还是使用git reset --hard 命令(commit为想要恢复的节点),如果你还记得那个节点,那么就很简单了。但是,现实情况是,我们大锁不知道commit ID,那么怎么找呢?
首先想到的是git log 命令,但是,你会发现,git log只显示了之前的提交,这是因为–hard参数会更改引用的指向,所以后面的提交记录都“消失”了。
Git为我们提供了另外一个命令:git reflog命令,这个命令会输出引用指向的变迁,通过这个命令可以找到之前的commit ID,然后再次使用git reset --hard 命令来恢复。

参考文献

本文是《Git权威指南》的读书笔记,详细内容参考第七章。

从仿真到实机:四足机器人控制算法的全流程验证框架 本文系统阐述了四足机器人从仿真到实机的全流程验证框架。针对仿真与实机环境的巨大差异,文章详细介绍了在MuJoCo等高保真仿真环境中的建模、算法迭代与压力测试方法,并重点解析了通过硬件抽象层和中间件搭建通往实机的关键桥梁。最后,提供了实机部署的安全清单与调试策略,旨在帮助开发者构建可重复、风险可控的算法验证闭环,提升算法在真实世界中的鲁棒性与可靠性。 阅读详情

相关推荐

图形引擎实战:镭射效果制作分享

该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。

qq_41166022的博客 1353

git reset详解

git

赵凯月的博客 3万+

保姆级教程:在CentOS 8上用libvirt + QEMU/KVM搭建ARM64虚拟机(含UEFI配置与常见坑点)

本文提供在CentOS 8上使用libvirt + QEMU/KVM搭建ARM64虚拟机的详细教程,涵盖UEFI配置与常见问题解决方案。通过环境准备、特殊配置要点、UEFI固件安装等步骤,帮助用户在x86架构服务器上高效运行ARM64虚拟化环境,特别适合开发测试与跨平台应用场景。

weixin_30292745的博客 129

git的使用——reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。有三种命令方式。

以沫wh的博客 5万+

C语言面试,8道一定会遇到的----关于指针的笔试题详解

C语言面试,8道一定会遇到的----关于指针的笔试题详解

m0_55322924的博客 463

从MFCC到GMM:手把手教你用Python实现说话人识别(附完整代码)

本文详细介绍了如何使用Python实现说话人识别系统,从MFCC特征提取到GMM模型训练,涵盖完整的技术流程和代码示例。通过梅尔频率倒谱系数(MFCC)和高斯混合模型(GMM)的结合,构建高效的说话人识别系统,适用于身份认证和智能交互场景。文章还探讨了从传统方法到深度学习的进阶话题,如i-vector和x-vector技术。

o1p2q3r的博客 200

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

git reset 是代码回退到某一版本,git revert 是代码将某一次提交的代码改动回退掉(新建一个commit记录进行回退)。 在git的这些命令中git reset是最长常用的,也是最危险的最容易被误用的。它的主要参数是:soft,mixed,hard它们告诉git,当执行reset是,要对index和working copy做什么。

wangdawei_的博客 1万+

操作系统原理:【优麒麟】linux内核添加系统调用

在底端添加如下代码。

Joyce_zz的博客 2709

Git -- reset 详解

实质上,reset这个指令虽然可以用来撤销commit,但它的实质行为并不是撤销,而是移动HEAD,并且「捎带」上HEAD所指向的branch(如果有的话)。也就是说,reset这个指令的行为其实和它的字面意思 "reset"(重置)十分相符:它是用来重置HEAD以及它所指向的branch的位置的。而之所以起到了撤销commit的效果,是因为它把HEAD和它所指向的 branch 一起移动到了当前commit的父commit上,从而起到了「撤销」的效果:git reset。

Mark Wu 的博客 1万+

看懂 SAP S/4HANA 产品主数据里的 GTIN:一串号码背后的全球商品识别与业务协同

SAP S/4HANA中的GTIN管理是企业供应链运营的关键环节。本文深入解析GTIN的业务内涵及其在SAP系统中的实现方式:1) GTIN是全球通用的商品标识码,不同于企业内部物料编码;2) SAP主数据中GTIN与计量单位强绑定,需为不同包装层级维护独立GTIN;3) 同一产品可能因渠道、供应商差异存在多个GTIN;4) GTIN贯穿零售POS、仓储管理、EDI订单等核心业务流程;5) 通过典型案例说明错误维护GTIN将导致收银异常、仓库作业低效等运营问题。文章强调GTIN管理需结合包装层级、计量单位等

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1432

本地部署DeepSeek并搭建量化交易系统:完整指南

本地部署DeepSeek并搭建量化交易系统指南 本文提供了一套完整的本地部署DeepSeek大语言模型并构建量化交易系统的技术方案。系统包含以下核心组件: 环境配置:详细说明Ubuntu系统、NVIDIA显卡驱动、CUDA和Python环境的安装要求,推荐使用conda管理依赖 DeepSeek部署: 通过HuggingFace下载7B或13B量化版本模型 使用4-bit量化技术降低显存需求 封装为FastAPI服务提供推理接口 量化系统架构: 模块化设计,各组件通过Redis解耦 包含数据获取、因子计算、

huanghm88的专栏 477

Git reset(回滚) 和 revert(撤销)(图文详解)

在利用GIT实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法. reset:删除直到XXX版本的所有commit(回滚到指定版本) revert:删除某个XXX版本的commit(删除已提交的某个版本)

普通人一枚 1万+

SAP RAP学习系列合集介绍

《SAP RAP学习系列合集:从入门到部署的完整指南》摘要: 本文介绍了作者创建的SAP RAP学习系列合集,涵盖RAP开发从基础概念到实战部署的全流程。系列目前包含17篇文章,系统讲解了RAP核心开发技术:从数据建模、UI构建到行为定义(包括并发控制、草稿功能、授权验证等),最后详细演示了应用部署到Fiori Launchpad的两种方案(OP版和ES版)。

DeveloperMrMeng的博客 1490

git | reset命令

git reset 命令是git中最常用的命令,但也是最危险,最容易被误用的命令。 一、master 分支 我们知道git在初始化时,会为我们默认创建一个master分支,那这个master到底是什么呢?其实它在.git目录下对应了一个引用文件-----.git/refs/heads/master文件,而该文件的内容便是该分支中最新的一次提交的ID: $ cat .git/refs/heads/m...

Willian的博客屋 354

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Git “reset“ 命令详解】

git reset是 Git 中一个非常重要的命令,它用于撤销 Git 仓库中的某些操作,主要用于重置文件的状态以及移动当前分支的指针。通过git reset,你可以恢复工作区、暂存区或历史记录中的文件状态。这个命令非常适用于撤销某些提交、取消文件的暂存、或者将工作区恢复到某个特定的版本。总结git reset是一个强大的 Git 命令,用于撤销某些操作或重置仓库的状态。它支持不同的重置模式,适应不同的需求。无论是撤销提交、取消暂存,还是清除文件修改,git reset都能提供高效的解决方案。最佳实践建议。

涛ing的博客 5182

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Git:git-reset的用法总结

前言 Git reset感觉是相当复杂的一个指令,用了快一年了,总感觉还没有用明白,所以,需要好好总结一下。 语法 git reset [-q] [&amp;amp;amp;amp;amp;amp;lt;tree-ish&amp;amp;amp;amp;amp;amp;gt;] [--] &amp;amp;amp;amp;amp;amp;lt;paths&amp;amp;amp;amp;amp;amp;gt;…​ git reset (--patch | -p) [

IT老兵的驿站 3683

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

git reset的用法

git reset的讲解分支游标 master我们仔细了解一下 git 的分支管理,就可以知道,其实 git 的所有管理都是通过 commit id 实现的,我们常用的 HEAD, master 以及分支名其实都只是代表的一个 commit id 而已,只不过是为了方便我们的记忆以比较 human 的方式表示。master 以及其他的 分支名对应的 commit id都存放在 .git/refs/h

RioCoder的专栏 992

git reset 命令

git reset 命令

xiaozhi 768

(六)Git后悔药 - git reset 命令的使用

【代码】23. git reset。

xiaohaha123258的博客 784

git reset 的3种用法

git reset 主要用于重置代码,使工作区回到过去的某个状态,主要有3种用法: 使用参数 --hard,如 git reset --hard < commit ID > 直接把 HEAD 指针移动到 commit ID 上,无论修改是否被 add 、 commit ,都直接重置(此时暂存区被清空,工作区的修改被清空),所做的修改将全部丢失,这是非常危险的。但是如果你修改之后进行了 commit 操作,那非常好办,可以用 reflog 查询相应的 hash 值,进行恢复;如果你修改之后,进行

东风小火的博客 2429

Git reset命令

摘自《Git权威指南》 Git reset 是Git最常用的命令之一,也是最危险最容易误用的命令。 用法一:git reset [-q] [] [--] ... 用法二:git reset [--soft --mixed | --hard | --merge | --keep] [-q] [] 以上两种用法,都是可选项,可以使用下引用或提交ID,如果省略则相当于使用了HEAD的指向作为提交

hitfyb的博客 519

[转] git reset简介

http://blog.youkuaiyun.com/hudashi/article/details/7664464 http://guibin.iteye.com/blog/1014369 http://hi.baidu.com/tiger_tnt/blog/item/a0464ffa6a8115d9b58f314d.html http://web.mit.edu/~mkgray/project/si...

weixin_33971977的博客 155

git reset and git checkout

git reset --hard : 1.替换引用的指向.引用指向新的提交ID; 2.替换暂存区.替换后,暂存区的内容和引用指向的目录树一致; 3.替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同. git reset --soft : 1.替换引用的指向.引用指向新的提交ID. 即只更改引用的指向,不该编暂存区和工作区. git

肖氏专栏 1363

Git学习笔记(五) Git重置

重置命令的用法 用法一:git reset [-q] [] [--] ...   为了避免路径和引用(或提交ID)同名而发生冲突,可以在前用--作为分隔 用法二:git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [] 为可选项,可以使用引用或提交ID,若忽略则相当于使用了HEAD的指向作为提交ID 第一种用法不会重置

Present 9924

git重置

1、在工作区创建一个新文件,并提交到版本库中: 查看master分支中最新提交的ID,发生改变,指向新的提交: 查看提交日志: 引用refs/heads/master像一个游标,可以指向新的提交。 git reset命令可以将游标指向任意一个存在的提交ID。重置到父提交(–hard参数,会破坏工作区未提交的改动以及暂存区的修改内容,包括重置文件和其他文件中的未提交修改都会丢失):

u014785687的博客 620

GIt-重置

master分支在版本库的引用目录(.git/refs)中体现为一个引用文件.git/refs/heads/master,其内容就是分支中最新提交的提交ID。 $ cat .git/refs/heads/master e695606fc5e31b2ff9038a48a3d363f4c21a3d86 通过对提交本身数据结构的分析,看到提交可以通过到父提交的关联实现对提交历史的追溯。注意:下面的git...

weixin_30292843的博客 178
上一篇: AWS EC2使用问题记录
下一篇: 数据段、代码段、堆、栈详解
Colorful_lights
博客等级 码龄10年 27粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值