【git使用】常用的 git 撤销操作(restore、reset、revert)

常用命令总结

  • 注意坑
    • 新增文件是未被跟踪状态(untracked),也就是下面命令不会对此文件生效
    • 所以新增文件,需要先被 git 记录到,也就是 git add new-file
    • 之后执行这些操作,就会生效了
# 丢弃工作区的修改(不包括对文件自身的操作,如添加文件、删除文件)
git restore <file_name> 
# 将暂存区的修改重新放回工作区(包括对文件自身的操作,如添加文件、删除文件)
git restore --staged <file_name> # 撤销最新的 commit,将其改动放回到 工作区
git reset HEAD~  # 或 git reset --mixed HEAD~  都是同一个意思# 撤销最新的 commit,将其改动放回到 暂存区
git reset --soft HEAD~  # 丢弃当前工作区和暂存区所有的改动
git reset --hard HEAD

git store

  • 『现学现忘』Git基础 — 23、Git中的撤销操作 - 繁华似锦Fighting - 博客园
  • 一次搞清 git checkout,git restore 和 git reset_git restore和git checkout-CSDN博客
# 丢弃工作区的修改(不包括对文件自身的操作,如添加文件、删除文件)
git restore <file_name> 
# 将暂存区的修改重新放回工作区(包括对文件自身的操作,如添加文件、删除文件)
git restore --staged <file_name> 

git reset —— 更改 HEAD 指针指向

  • git 工作原理与撤销操作图解 | Shall We Code?
# 将该 commit-id 后面所有 commit 丢弃,那丢弃的 commit 中的改动内容是否会消失?
# --mixed 模式: 也就是默认模式,会将所有丢失 commit 的文件改动等放到【工作区】
# --soft 模式: 也就是默认模式,会将所有丢失 commit 的文件改动等放到【暂存区】
# --hard 模式: 也就是默认模式,会将所有丢失 commit 的文件改动【丢弃】# 所以,再执行 reset 前,最好将工作区和暂存区清空,否则可能有未注意到的合并,从而产生bug
# 比如若有当前工作区有 a 文件改动,撤销的 commit 中也有 a 文件的改动, git reset 执行后,工作区的 a 文件是以哪种改动为主?
# 经测试 a 文件的改动 = 当前工作区的 a 文件改动 != 撤销commit中a文件的改动
# 所以,即使无法清空工作区和暂存区,最好也要保证 工作区和撤销的commit中 没有相同文件的改动
# 另外执行 hard 模式要慎重,会造成文件的丢失
# 若不慎造成 commit 丢失,可以通过 reflog 进行恢复,但是无法恢复【工作区】和【暂存区】的文件丢失
git reset commit-id # 默认 --mixed 模式# 将该 commit-id 后面所有 commit 撤销
git reset commit-id # 默认 --mixed 模式
# 将最新的 commit 撤销
git reset HEAD~ # 或 git reset HEAD^
# 将最新的和次新的 commit 撤销
git reset HEAD~2 # 或 git reset HEAD^^

git revert

  • git 工作原理与撤销操作图解 | Shall We Code?
# git revert  不会改变历史 commit,而是提交一个新 commit,执行指定 commit 中改动的反向操作
# 如 commit-A 中的改动是,新增 a.txt 文件, git revert commit-A 执行后,会新增一个 commit,该 commit 的改动就是 删除 a.txt
git revert commit-id

git clean

  • Git clean: 清除不必要的文件并优化你的代码库 - 掘金

git clean用于清除没有加入到git版本库的文件和目录,如果加入到git版本库里的话,我们就无法使用git clean 清除,必须还原到未跟踪(Untracked)状态才可以进行git clean清除,在我们进行git管理项目代码的时候,经常会遇到以下场景。

  1. 在项目中添加了许多测试资源,测试完成后想把它们删了。
  2. 代码回滚时,有些文件或目录回滚到了未跟踪(Untracked)状态,并需要把它们移除掉。
  3. 项目开发过程中,临时创建了很多临时文件夹和目录,在项目核心代码加入到暂存区前,需要移除无用文件。

这个时候,通过使用git clean命令来处理,就会非常容易。

# 小结
git  clean在开发中应该充分应用。因此请牢记以下几个组合参数:
-n,显示哪些文件会被删除,如果文件是.gitignore里标记的文件,则忽略。
-d,查找目录。
-f,删除文件。
-x,查找未跟踪(Untracked)所有文件
-X,仅查找.gitignore里标记的未跟踪(Untracked)文件查看删除列表 git clean -n组合
删除列表git clean -f组合# 1. 查看哪些文件会被删除
# 可以查看哪些未跟踪文件将会被删除,同时这些文件没有在.gitignore文件里进行标记。
git clean -n 
# 查看将会被删除的所有未跟踪文件
git clean -nx
# 只展示那些在.gitignore里标记的文件中,哪些是将要被删除的未跟踪文件。
git clean -nX
# 可以查看哪些文件和目录将会被删除,同时这些文件和目录没有在.gitignore文件里进行标记
git clean -nd 
# 查看将会被删除的所有未跟踪的文件和目录
git clean -nx
# 只展示那些在.gitignore里标记的文件和目录中,哪些是将要被删除的未跟踪文件和目录。
git clean -nX
# 其中,.gitignore中,如果忽略的文件目录结构是dir/*时,git clean -ndX,只删除忽略目录下的所有文件;如果忽略的文件目录结构是dir/时,git clean -ndX,删除忽略的目录# 2. 执行删除操作
# 删除.gitignore里未标记的文件
git clean -f
# 删除所有未跟踪的文件
git clean -fx
# 只删除.gitignore里标记的文件
git clean -fX# 删除.gitignore里未标记文件和目录
git clean -fd
# 删除所有未跟踪的的文件和目录
git clean -fdX
# 删除.gitignore里标记的文件和目录
git clean -fdX

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

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

相关文章

自监督深度学习技术

一、定义 自监督学习&#xff08;SSL&#xff09;是机器学习的一种范式&#xff0c;用于处理未标记数据以获取有用的表示&#xff0c;以帮助下游学习任务。SSL方法最显著的特点是它们不需要人类标注的标签&#xff0c;这意味着它的训练完全基于由未标记的数据样本组成的数据集…

网络通信过程的一些基础问题

客户端A在和服务器进行TCP/IP通信时&#xff0c;发送和接收数据使用的是同一个端口吗&#xff1f; 这个问题可以这样来思考&#xff1a;在客户端A与服务器B建立连接时&#xff0c;A需要指定一个端口a向服务器发送数据。当服务器接收到A的报文时&#xff0c;从报文头部解析出A的…

04.循环结构

循环结构 应用场景 我们在写程序的时候&#xff0c;一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球&#xff0c;如果机器人持球而且还没有进入射门范围&#xff0c;那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中&#xff0c;让…

018、通用集合类型

Rust标准库包含了一系列非常有用的被称为集合的数据结构。大部分的数据结构都代表着某个特定的值&#xff0c;但集合却可以包含多个值。 与内置的数组与元组类型不同&#xff0c;这些集合将自己持有的数据存储在了堆上。这意味着数据的大小不需要在编译时确定&#xff0c;并且可…

matlab subs 函数计算太慢

来源 计算机器人 transformation matrix 相关内容时&#xff0c;对于关节角度进行离散&#xff0c;循环计算很慢&#xff0c;随着角度划分越来越细&#xff0c;怎么提高速度是一个问题。 最优解决方法 fun_handle matlabFunction(T_t2b_RPY_tmp);T_t2b_RPY_tmp是 transform…

WEB 3D技术 three.js 顶点交换

本文 我们来说 顶点的转换 其实就是 我们所有顶点的位置发生转变 我们整个物体的位置也会随之转变 这里 我们编写代码如下 import ./style.css import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.j…

kettle的基本介绍和使用

1、 kettle概述 1.1 什么是kettle Kettle是一款开源的ETL工具&#xff0c;纯java编写&#xff0c;可以在Window、Linux、Unix上运行&#xff0c;绿色无需安装&#xff0c;数据抽取高效稳定。 1.2 Kettle核心知识点 1.2.1 Kettle工程存储方式 以XML形式存储以资源库方式存储…

【数据结构】树的遍历

树的遍历 前序遍历 前序遍历是按照根节点->左子树->右子树的顺序进行遍历 图片来源维基百科深度优先遍历&#xff08;前序遍历&#xff09;: F, B, A, D, C, E, G, I, H. 代码实现 递归 # class TreeNode: # def __init__(self, x): # self.val x # …

Office提示内存或磁盘空间不足

Office提示内存或磁盘空间不足 Office提示内存或磁盘空间不足&#xff0c;可以试试以下方法&#xff0c;不管用不要骂我 打开选项 点击信任中心 在受保护的视图中将以下选项取消勾选后确定&#xff0c;关掉软件重新打开

Java实现责任链模式

责任链模式是一种设计模式&#xff0c;用于处理请求的解耦。在责任链模式中&#xff0c;多个对象都有机会处理请求&#xff0c;从而避免了请求发送者和接收者之间的直接依赖关系。每个处理者都可以决定是否处理请求以及将请求传递给下一个处理者。 简介 责任链模式由一条链组…

服务容错-熔断策略之断路器hystrix-go

文章目录 概要一、服务熔断二、断路器模式三、hystrix-go3.1、使用3.2、源码 四、参考 概要 微服务先行者Martin Fowler与James Lewis在文章microservices中指出了微服务的九大特征&#xff0c;其中一个便是容错性设计(Design for failure)。正如文章中提到的&#xff0c;微服…

Python打印Python环境、PyTorch和CUDA版本、GPU数量名称等信息

代码&#xff1a; import torch import platformgpu_num torch.cuda.device_count() torch_version torch.__version__ python_version platform.python_version()print("Python Version: Python %s" % python_version) print("PyTorch Version: %s" %…

Spring之推断构造方法源码

文章目录 一、 简介1. 内容回顾2. Spring推断构造方法 二、 源码分析 一、 简介 1. 内容回顾 前面分析了Spring的Bean的生命周期的源码&#xff0c;然后分析了依赖注入源码&#xff0c;以及依赖注入的过程中循环依赖Spring的解决方案。在介绍Bean的生命周期中&#xff0c;我们…

三维模型的几何坐标纠正应用探讨

三维模型的几何坐标纠正应用探讨 倾斜摄影三维模型数据的几何坐标纠正应用分析 近年来&#xff0c;倾斜摄影技术在三维数据采集设备中得到广泛应用。倾斜摄影技术通过在飞行平台上搭载多台传感器&#xff0c;从不同角度采集影像&#xff0c;相比传统的摄影测量&#xff0c;倾斜…

每日算法打卡:数的三次方根 day 7

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 题目分析示例代码 原题链接 790. 数的三次方根 题目难度&#xff1a;简单 题目描述 给定一个浮点数 n&#xff0c;求它的三次方根。 输入格式 共一行&#xff0c;包含一个浮…

C++_虚析构

介绍 1.只有虚析构 (PS:没有虚构造) 2.加与不加 virtual关键词 的区别 2.1如果父类的析构函数 不是虚析构&#xff0c;则父类指针指向子类时&#xff0c;delete掉父类的指针 (PS:则效果为 只调用父类的析构的函数&#xff0c;不调用子类的析构函数) 2.2 如果父类的析构函数 是虚…

第17课 为rtsp流加入移动检测功能

在上节课&#xff0c;我们成功拿到了rtsp视频和音频流&#xff0c;在第13课&#xff0c;我们为普通的usb摄像头加上了移动检测功能&#xff0c;那能不能给rtsp摄像头也加上移动检测功能以实现一些好玩的应用呢&#xff1f;答案是肯定的&#xff0c;在usb摄像头检测中&#xff0…

vue结合Cesium加载gltf模型

Cesium支持什么格式&#xff1f; Cesium支持的格式包括&#xff1a;3D模型格式&#xff08;如COLLADA、gITF、OBJ&#xff09;、影像格式&#xff08;如JPEG、PNG、GeoTIFF&#xff09;、地形格式&#xff08;如STL、Heightmap&#xff09;、矢量数据格式&#xff08;如GeoJSON…

css计时器 animation实现计时器延时器

css计时器 animation实现计时器延时器 缺点当切页面导航会休眠不执行 最初需求是一个列表每个项目都有各自的失效时间 然后就想到 计时器延时器轮询等方案 这些方案每一个都要有自己的计时器 感觉不是很好 轮询也占资源 然后突发奇想 css能不能实现 开始想到的是transition测…

初识Linux shell

Linux初探 Linux系统可以划分为4个部分&#xff1a; Linux内核&#xff1a;Linux系统的核心&#xff0c;控制着系统的所有硬件和软件&#xff0c;在必要时分配硬件&#xff0c;并根据需要执行软件。 内核主要功能&#xff1a; 系统内存管理&#xff1a;内核通过硬件上称为交换…