当前位置: 首页 > news >正文

Git 版本控制--git restore和git reset

git restore 和 git reset 是 Git 版本控制系统中两个用于撤销更改的命令,但它们的作用范围和用途有所不同。

git restore

git restore 是 Git 版本控制系统中的一个命令,用于撤销工作目录中的更改,但不影响暂存区(staging area)或历史记录。这个命令是在 Git 2.23 版本中引入的,旨在提供一个更直观和直接的方式来恢复文件到之前的状态,替代了之前可能需要结合使用 git checkout -- <file> 或 git reset HEAD <file> 命令的场景。

基本用法

  • 恢复特定文件:如果你在工作目录中修改了一个或多个文件,并希望撤销这些更改,可以使用 git restore 命令后跟文件名。例如,要恢复 file.txt 文件到其最近的提交状态,你可以运行:

    git restore file.txt
  • 恢复多个文件:你可以一次性恢复多个文件,只需在命令中列出它们,用空格分隔。

  • 恢复整个目录:如果你修改了一个目录中的所有文件,并希望恢复整个目录到之前的提交状态,只需指定目录名即可。注意,这不会递归地恢复子目录中的文件,除非明确指定。

  • 使用 --staged 选项:默认情况下,git restore 恢复的是工作目录中的文件。但是,如果你希望从暂存区(即你即将提交的更改)中移除一个或多个文件,可以使用 --staged 选项。这相当于使用 git reset HEAD <file>,但不会更改工作目录中的文件。

    git restore --staged file.txt

    注意事项

  • 使用 git restore 时,确保你了解哪些更改将被撤销,特别是当处理重要文件时。
  • 如果你已经提交了你的更改,git restore 将不会撤销这些更改。在这种情况下,你可能需要使用 git revert 或 git reset 等命令来撤销提交。
  • git restore 是一个相对较新的命令,因此请确保你的 Git 版本支持它。如果你的 Git 版本较旧,你可能需要使用 git checkout 或 git reset 命令的等效用法

git reset

基本用法

git reset 有三个主要模式,通过 --soft--mixed(默认)和 --hard 选项来指定:

  • --soft:仅移动 HEAD 指针到指定的提交,保留暂存区和工作目录中的所有更改。这意呀着所有更改仍然被标记为已暂存(staged),准备好被提交。这通常用于重新组织提交历史,而不改变文件在暂存区和工作目录中的状态。

  • --mixed(或没有指定模式):移动 HEAD 指针到指定的提交,并将暂存区的内容重置为该提交的内容,但保留工作目录中的更改。这相当于撤销了之前的 git add 命令,使得之前已暂存的更改变为未暂存状态。

  • --hard:移动 HEAD 指针到指定的提交,并将暂存区和工作目录中的内容都重置为该提交的内容。这会丢弃自该提交以来在工作目录和暂存区中所做的所有更改。使用这个选项时要格外小心,因为它会丢弃未提交的更改。

示例

  1. 撤销上一次的提交(但保留更改在暂存区):

    git reset --soft HEAD~1

    然后,你可以使用 git commit 重新提交这些更改,或者使用 git commit --amend 修改最近的提交。

  2. 撤销上一次的提交并取消暂存更改(但保留在工作目录中):

    git reset --mixed HEAD~1

    或者简单地使用 git reset HEAD~1,因为 --mixed 是默认模式。

  3. 撤销上一次的提交并丢弃所有更改(在工作目录和暂存区中):

    git reset --hard HEAD~1

    警告:这将永久丢弃自上一次提交以来所做的所有更改。

注意事项

  • 在使用 git reset --hard 之前,请确保你确实想要丢弃这些更改,因为它们将无法恢复(除非你有其他备份或未推送的引用)。
  • git reset 默认不会更改工作目录中的文件,除非你使用了 --hard 选项。
  • 如果你只是想将某些文件从暂存区中移除,但不更改 HEAD 指针或工作目录中的文件,你可以使用 git restore --staged <file>(Git 2.23+)或 git reset HEAD <file>(在较旧的 Git 版本中)。然而,请注意 git reset HEAD <file> 在新版本的 Git 中已被 git restore --staged <file> 取代,作为更直观和专用的命令。

相关文章:

Git 版本控制--git restore和git reset

git restore 和 git reset 是 Git 版本控制系统中两个用于撤销更改的命令&#xff0c;但它们的作用范围和用途有所不同。 git restore git restore 是 Git 版本控制系统中的一个命令&#xff0c;用于撤销工作目录中的更改&#xff0c;但不影响暂存区&#xff08;staging area…...

DBAPI如何实现插入数据前先判断数据是否存在,存在就更新,不存在就插入

DBAPI实现数据不存在即插入、存在即更新 场景 往数据库插入数据的时候&#xff0c;需要先判断一下记录是否在数据库已经存在&#xff0c;如果已经存在就更新记录&#xff0c;如果不存在&#xff0c;才插入数据。 实现方案 采用存储过程实现&#xff0c;以mysql为例子 创建存储过…...

【渗透测试】-灵当CRM系统-sql注入漏洞复现

文章目录 概要   灵当CRM系统sql注入漏洞&#xff1a;   具体实例&#xff1a;  技术名词解释  小结 概要 近期灵当CRM系统爆出sql注入漏洞&#xff0c;我们来进行nday复现。 灵当CRM系统sql注入漏洞&#xff1a; Python sqlmap.py -u "http://0.0.0.0:0000/c…...

c语言练习题1(数组和循环)

1实现一个对整形数组的冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的&#xff0c;直到没有再需要交换的元…...

实验3 Hadoop集群运行环境搭建和使用

实验3 Hadoop集群运行环境搭建和使用 一、实验介绍 本节实验旨在引导学生通过实际操作搭建一个基本的Hadoop集群,并进行基本的使用验证。实验包括在集群节点上添加域名映射以实现节点间的相互识别,配置免密SSH登录以便无密码访问各节点,安装和配置JDK以满足Hadoop的运行需求…...

前端文件上传全过程

特别说明&#xff1a;ui框架使用的是蚂蚁的antd 这里主要是学习前端上传接口的传递参数包括前端上传之前对于代码的整理 一、第一步将前端页面画出来 源代码&#xff1a; /** 费用管理 - IT费用管理 - 费用数据上传 */ import { useState } from "react"; import {…...

MySQL中的函数简单总结,以及TCL语句的简单讲解

文章目录 一、函数1、ifnull2、if3、case4、exists 存在5、字符串函数&#xff08;重点&#xff09;6、数学函数7、日期函数 二、TCL语句1、创建用户2、赋予权限3、修改mysql允许远程登录 一、函数 1、ifnull 当前⾯的值是null的时候&#xff0c;使⽤后⾯的默认值 ifnull(字段…...

GPS在Linux下的使用(war driving的前置学习)

1.ls /dev/tty* 列出所有与 tty 相关的设备文件。这些设备文件通常对应终端设备 ttyUSB0是GPS端口 2.cat /dev/ttyUSB0 用于读取并显示连接到 /dev/ttyUSB0 串口设备发送的原始数据 这种是GPS定位不全的&#xff0c;要拿到更开阔的地方 这种是GPS定位全的 因为会持续输出…...

开发经验总结: 读写分离简单实现

背景 使用mysql的代理中间件&#xff0c;某些接口如果主从同步延迟大&#xff0c;容易出现逻辑问题。所以程序中没有直接使用这个中间件。 依赖程序逻辑&#xff0c;如果有一些接口可以走读库&#xff0c;需要一个可以显示指定读库的方式来连接读库&#xff0c;降低主库的压力…...

MySQL(面试题 - 同类型归纳面试题)

目录 一、MySQL 数据类型 1. 数据库存储日期格式时&#xff0c;如何考虑时区转换问题&#xff1f; 2. Blob和text有什么区别&#xff1f; 3. mysql里记录货币用什么字段类型比较好&#xff1f; 4. MySQL如何获取当前日期&#xff1f; 5. 你们数据库是否支持emoji表情存储&…...

【C++ Primer Plus习题】17.7

问题: 解答: #include <iostream> #include <vector> #include <string> #include <fstream> #include <algorithm>using namespace std;const int LIMIT 50;void ShowStr(const string& str); void GetStrs(ifstream& fin, vector<…...

vue3(整合版)

创建第一个vue项目 1.安装node.js cmd输入node查看是否安装成功 2.vscode开启一个终端&#xff0c;配置淘宝镜像 # 修改为淘宝镜像源 npm config set registry https://registry.npmmirror.com 输入如下命令创建第一个Vue项目 3.下载依赖&#xff0c;启动项目 访问5173端口 …...

复制他人 CSDN 文章到自己的博客

文章目录 0.前言步骤 0.前言 在复制别人文章发布时&#xff0c;记得表明转载哦 步骤 在需要复制的csdn 文章页面&#xff0c;打开浏览器开发者工具&#xff08;F12&#xff09;Ctrl F 查找"article_content"标签头 右键“Copy”->“Copy element”新建一个 tx…...

【算法——二分查找】

理论基础&#xff1a; 程序员面试经典题&#xff0c;二分搜索一个区间&#xff0c;区间查找 (LeetCode 34)_哔哩哔哩_bilibili 手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode&#xff1a;704. 二分查找_哔哩哔哩_bilibili 这个是红蓝法&#xff0c;很牛…...

Cisco Packet Tracer的安装加汉化

这个工具学计算机网络的同学会用到 1.下载安装 网盘链接&#xff1a;https://pan.baidu.com/s/1CmnxAD9MkCtE7pc8Tjw0IA 提取码&#xff1a;frkb 点击第一个进行安装&#xff0c;按步骤来即可。 2.汉化 &#xff08;1&#xff09;复制chinese.ptl文件 &#xff08;2&…...

MMain函数定义为WinMain函数看port1632.h和pwin32.h文件

编译win2k3的源代码的时候有时候看到MMain函数 ..//public/sdk/inc/port1632.h #if defined(WIN16) /* ---------------- Maps to windows 3.0 and 3.1 16-bit APIs ----------------*/ #include "ptypes16.h" #include "pwin16.h" #include "plan16.…...

单词搜索问题(涉及递归等)

目录 一题目&#xff1a; 二思路解释&#xff1a; 三解答代码&#xff1a; 一题目&#xff1a; newcode题目链接&#xff1a; 单词搜索_牛客题霸_牛客网 二思路解释&#xff1a; 思路&#xff1a;个人理解是找到word中的第一个元素&#xff0c;然后去递归的上下左右查找&am…...

Redis的一些通用指令

首先我们需要先连接客户端服务器&#xff0c;此时我们需要通过redis-cli和redis服务器进行交互&#xff0c;输入ping来确保通路的流畅 &#xff08;一&#xff09;get和set redis中最核心的两个命令就是get和set&#xff0c;get就是根据key来取出对应value&#xff0c;set就是把…...

C++中vector类的使用

目录 1.vector类常用接口说明 1.1默认成员函数 1.1.1构造函数(constructor) 1.1.2 赋值运算符重载(operator()) 2. vector对象的访问及遍历操作(Iterators and Element access) 3.vector类对象的容量操作(Capacity) 4. vector类对象的修改及相关操作(Modifiers and Stri…...

cmaklist流程控制——调试及发布

cmaklist流程控制 目前只会配置-编译调试-打包发布&#xff0c;并且不会workflow控制 后续学习配置-编译调试-测试-打包发布&#xff0c;workflow控制&#xff0c;理解整个流程&#xff0c;目前对流程控制理解也不够。 1.CMake Presets 先于Cmakelist文件&#xff0c;指导项…...

Python与OpenCV实战:图像对比度与亮度调整的算法解析与优化

1. 图像处理中的对比度与亮度基础 当你用手机拍完照片觉得太暗或者颜色不够鲜艳时&#xff0c;通常会下意识地滑动"亮度"和"对比度"调节条。这背后的数学原理&#xff0c;其实就是我们要探讨的核心算法。在OpenCV中&#xff0c;调整图像对比度和亮度的基础…...

炉石传说HsMod插件:55+功能全面优化你的游戏体验

炉石传说HsMod插件&#xff1a;55功能全面优化你的游戏体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架的开源炉石传说模改插件&#xff0c;为玩家提供超过55项实…...

2025小红书跳转卡片技术揭秘:从逆向分析到服务器端自动化部署

1. 小红书跳转卡片技术现状解析 小红书跳转卡片功能原本是平台提供给商家的官方营销工具&#xff0c;但近期所有公开接口都已关闭。现在市面上能正常使用的方案&#xff0c;基本都是通过逆向工程实现的Hook技术方案。我花了两个月时间逆向分析了小红书安卓端7.8版本到8.5版本的…...

Hackintool终极指南:三步解决黑苹果显卡、音频和USB配置难题

Hackintool终极指南&#xff1a;三步解决黑苹果显卡、音频和USB配置难题 【免费下载链接】Hackintool The Swiss army knife of vanilla Hackintoshing 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintool 还在为黑苹果配置而烦恼吗&#xff1f;显卡驱动不工作、音…...

Ostrakon-VL扫描终端实战:识别冷柜温度计读数并判断是否符合标准

Ostrakon-VL扫描终端实战&#xff1a;识别冷柜温度计读数并判断是否符合标准 1. 项目背景与价值 在零售和餐饮行业中&#xff0c;冷链管理是确保食品安全的关键环节。传统的人工检查冷柜温度方式存在效率低、易出错等问题。Ostrakon-VL扫描终端通过创新的像素风格界面和强大的…...

Univer全栈框架实战指南:3步构建企业级AI原生表格应用

Univer全栈框架实战指南&#xff1a;3步构建企业级AI原生表格应用 【免费下载链接】univer Build AI-native spreadsheets. Univer is a full-stack framework for creating and editing spreadsheets on both web and server. With Univer Platform, Univer Spreadsheets is d…...

NCM格式突破全攻略:从解密到跨平台播放的自由解锁方案

NCM格式突破全攻略&#xff1a;从解密到跨平台播放的自由解锁方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 音乐作为数字生活的重要组成部分&#xff0c;却常常受到格式限制的困扰。网易云音乐的NCM加密格式就是其中典型代表&…...

手把手教你用n8n和Gemini 2.5 Flash搭建英语作文批改机器人(附完整工作流JSON)

从零构建AI英语作文批改系统&#xff1a;基于n8n与Gemini的自动化实践 在数字化教育浪潮中&#xff0c;教师面临的最大挑战之一是如何高效处理大量学生作业。英语作文批改尤其耗时——需要逐字阅读、语法检查、内容评估&#xff0c;最后还要给出建设性反馈。传统方式下&#xf…...

飞书机器人告警配置避坑指南:夜莺监控常见报错解决方案

飞书机器人告警配置避坑指南&#xff1a;夜莺监控常见报错解决方案 深夜的告警风暴里&#xff0c;飞书机器人突然罢工是什么体验&#xff1f;上周三凌晨2点&#xff0c;当我面对满屏的Key Words Not Found和sign match fail报错时&#xff0c;终于理解了为什么运维工程师的咖啡…...

高效获取B站视频:downkyi开源工具全方位使用指南

高效获取B站视频&#xff1a;downkyi开源工具全方位使用指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09…...