[Git] git reset --hard / git reset --soft

git reset --hard

功能:重置索引(暂存区)和工作目录到指定的提交状态。这意味着它会丢弃所有未提交的更改和已暂存的更改。
适用场景:当你想要完全放弃当前工作目录中的所有更改并回退到某个特定提交状态时,可以使用这个命令。
注意事项:
所有未提交的更改都会丢失,因此在使用这个命令之前,请确保你不需要保留当前的更改。
一旦执行,无法轻易恢复被丢弃的更改,除非使用一些特殊的恢复工具。

将本地未commit的内容都会丢失,然后强制变更到某个commit状态

git reset --soft

功能:仅重置当前分支的 HEAD 指针,而不更改索引(暂存区)和工作目录。这意味着你的所有更改都会保留在暂存区中。
适用场景:当你想要撤销一个或多个提交,但希望保留更改以便重新提交时,可以使用这个命令。
注意事项:
更改会保留在暂存区中,因此你可以对这些更改进行进一步修改或重新提交。

保留你本地的暂存区,即使你当前的代码还没有commit,也不会被丢弃,而只是将你的提交回滚到某个特定的commit

使用 HEAD 进行重置

  1. git reset --hard HEAD:
  • 用途:用于将工作目录和索引重置为当前 HEAD 所指向的提交状态。
  • 效果:相当于抛弃所有未提交的更改和暂存的更改,回到当前分支的最新提交状态。
  • 示例:
    git reset --hard HEAD

注意:这是一个危险操作,会丢失未提交的更改。
2. git reset --hard HEAD~n:

  • 用途:用于将当前分支的指针、工作目录和索引重置到 HEAD 向前 n 个提交的位置。
  • 效果:丢弃最近的 n 个提交,以及所有未提交的更改。
  • 示例:
    git reset --hard HEAD~2

注意:这会永久丢弃这 n 个提交的所有更改。
3. git reset --soft HEAD~n:

  • 用途:将当前分支的 HEAD 指针重置到距 HEAD 的 n 个提交之前,但保留所有更改在暂存区。
  • 效果:撤销最近的 n 次提交,但保留更改以便可能重新提交。
  • 示例:
    git reset --soft HEAD~2
  1. git reset --hard HEAD^:
    HEAD^:这是一个简写,表示当前提交的父提交。HEAD^ 相当于 HEAD~1,即回退一个提交。
  • 用途:撤销最近的一次提交,并将工作目录和暂存区都恢复到这个提交的父提交状态。
  • 效果:丢弃当前分支的最新提交,以及所有未提交的更改。
  • 示例:
    git reset --hard HEAD^

总结

git reset --hard HEAD~n:移动当前分支到 n 个提交之前,并丢弃所有更改。
git reset --soft HEAD~n:移动当前分支到 n 个提交之前,但保留更改在暂存区。
使用这些命令时,特别是 --hard 选项时,请确保你不需要保留那些更改,因为它们会被丢弃。–soft 更安全一些,因为更改会保留在暂存区中,可以在需要时重新提交。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/66752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言基本知识复习浓缩版:scanf函数

C语言基本知识复习浓缩版:scanf函数 1 scanf()函数用于读取用户的键盘输入 2 scanf()函数的基本形式:scanf("参数列表1",参数列表2): 参数列表1:用户键盘输入的数据的类型,用占位符表示。 参数列表2:用户键…

Ubuntu 24.04 LTS系统安装Docker踩的坑

一开始我跟着Docker给出的官网文档 Ubuntu | Docker Docs 流程走,倒腾了两个多小时,遇到了各种坑,最后放弃了。在我们使用脚本安装Docker命令前,我们先把已经安装的Docker全部卸载掉。 卸载Docker 1.删除docker及安装时自动安装…

B树与B+树:数据库索引的秘密武器

想象一下,你正在构建一个超级大的图书馆,里面摆满了各种各样的书籍。B树和B树就像是两种不同的图书分类和摆放方式,它们都能帮助你快速找到想要的书籍,但各有特点。 B树就像是一个传统的图书馆摆放方式: 1. 书籍摆放&…

城市生命线安全综合监管平台

【落地产品,有需要可留言联系,支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要,聚焦城市安全重点领域,围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…

关于内网外网,ABC类地址,子网掩码划分

本文的三个关键字是:内网外网,ABC类地址,子网掩码划分。围绕以下问题展开: 如何从ip区分外网、内网?win和linux系统中,如何查询自己的内网ip和外网ip。开发视角看内外网更多是处于安全考虑,接口…

后端Java开发:第十二天

第十二天:封装 - 理解与应用 欢迎来到今天的学习内容!今天,我们将一起深入探讨 Java 中的 封装(Encapsulation)。封装是面向对象编程的四大基本特性之一,它的核心思想是把对象的状态(属性&…

成为LabVIEW自由开发者

成为LabVIEW自由开发者的体验可以非常丰富且具有挑战性,同时也充满了自我成长和多样化项目的机会。 ​ 1. 高度的灵活性与自由度 工作时间与地点:作为自由开发者,你可以自由选择工作时间和地点。你可以在家工作,也可以选择在咖啡…

Spring Boot + MyBatis Plus 存储 JSON 或 List 列表全攻略

在现代的后端开发中,我们常常需要处理复杂的数据结构,JSON 数据以及列表(List)数据屡见不鲜。如何高效地使用 Spring Boot 和 MyBatis Plus 来存储这些复杂数据类型,是这篇博客要探讨的重点。 一、为什么要存储 JSON …

大数据在公安领域中的应用分析

在当今信息化时代,数据已经成为一种新的生产要素,对于公安机关而言,如何有效地管理和利用这些数据资源,成为了提高警务工作效能和服务质量的重要途径。海量数据的获取确实为公安机关带来了前所未有的机遇,比如通过分析…

用于与多个数据库聊天的智能 SQL 代理问答和 RAG 系统(3) —— 基于 LangChain 框架的文档检索与问答功能以及RAG Tool的使用

介绍基于 LangChain 框架的文档检索与问答功能,目标是通过查询存储的向量数据库(VectorDB),为用户的问题检索相关内容,并生成自然语言的答案。以下是代码逻辑的详细解析: 代码结构与功能 初始化环境与加载…

uniapp:钉钉小程序需要录音权限及调用录音

{// ... 其他配置项"mp-dingtalk": {"permission": {"scope.userLocation" : {"desc" : "系统希望获得您的定位用于确认您周围的设施数据"},"scope.bluetooth" : {"desc" : "你的蓝牙权限将用于小…

基于QT和C++的实时日期和时间显示

一、显示在右下角 1、timer.cpp #include "timer.h" #include "ui_timer.h" #include <QStatusBar> #include <QDateTime> #include <QMenuBar> Timer::Timer(QWidget *parent) :QMainWindow(parent),ui(new Ui::Timer) {ui->setup…

Elasticsearch学习(1) : 简介、索引库操作、文档操作、RestAPI、RestClient操作

目录 1.elasticsearch简介1.1.了解es1.2.倒排索引正向索引和倒排索引 1.3.es的一些概念:文档和字段&#xff1b;索引和映射&#xff1b;Mysql与ES1.4.安装es、kibana部署单点es部署kibanaIK分词器安装IK分词器与测试扩展与停用词词典总结 部署es集群 2.索引库操作2.1.mapping映…

【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间

贪心算法 买卖股票的最佳时机买卖股票的最佳时机II跳跃游戏跳跃游戏II划分字母区间 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的…

SQL SERVER__RSN 恢复的深入解析

1. RSN 的工作原理 RSN 是 SQL Server 内部用于跟踪和管理备份和恢复操作顺序的编号。每次数据库备份&#xff08;包括完整备份、差异备份和事务日志备份&#xff09;都会生成一个唯一的 RSN。SQL Server 在恢复过程中使用 RSN 来确保备份文件按正确的顺序应用&#xff0c;从而…

Rabbitmq 具体怎么做到削峰的,是丢弃部分消费吗,有的实际场景是不允许丢弃

在高并发场景中&#xff0c;RabbitMQ 可以通过几种策略来实现 削峰&#xff08;缓解瞬时负载激增&#xff09;&#xff0c;而这些策略并不一定需要丢弃消息。在一些业务场景下&#xff0c;丢弃消息显然是不允许的&#xff0c;因此在这种情况下&#xff0c;可以使用以下方法来确…

如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress 教程

简介&#xff1a; 本教程旨在指导你如何在 Ubuntu 22.04 上使用 LEMP 栈安装 WordPress。 WordPress 是一个用 PHP 编写的开源内容管理系统。LEMP 栈是 Linux&#xff0c;NGINX&#xff0c;MySQL 和 PHP 的缩写。WordPress 非常用户友好&#xff0c;并提供了多种选项&#xff…

MyBatis深入了解

目录 xml 映射文件中&#xff0c;除了常见的select、insert、update、delete 标签之外&#xff0c;还有哪些标签? Dao 接口的工作原理是什么?Dao 接口里的方法&#xff0c;参数不同时&#xff0c;方法能重载吗? MyBatis 是如何进行分页的?分页插件的原理是什么? 简述 …

Springboot Bean创建流程、三种Bean注入方式(构造器注入、字段注入、setter注入)、循坏依赖问题

文章目录 1 Bean 创建流程1.1 Bean的扫描注册1.2 创建Bean的顺序 2 三种Bean注入方式2.1 构造器注入 | Constructor Injection&#xff08;推荐&#xff09;2.2 字段注入 | Field Injection&#xff08;常用&#xff09;2.3 方法注入 | Setter Injection2.4 三种方式注入顺序 3…

vue实现虚拟列表滚动

<template> <div class"cont"> //box 视图区域Y轴滚动 滚动的是box盒子 滚动条显示的也是因为box<div class"box">//itemBox。 一个空白的盒子 计算高度为所有数据的高度 固定每一条数据高度为50px<div class"itemBox" :st…