Git撤销修改_git 撤销修改-程序员宅基地

技术标签: Git  git  

Git撤销修改

本篇文章主要分为两部分,一是主要说明下如何使用Git来撤销对文件的修改,二是如何恢复误删的文件。以前一直没有弄明白,现在终于弄清了QAQ。在说操作之前,先说明下Git工作区暂存区版本库的概念。先上图,用的是菜鸟教程的图。

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
  • 当对工作区修改(或新增)的文件执行git add命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作git commit时,暂存区的目录树写到**版本库(对象库)**中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

明白了以上概念后,接下来来说下如何撤销修改以及恢复删除的文件。

一、撤销修改

​ 撤销修改分为以下三种情况:

  1. 已经push推送到远程仓库。
  2. 已经commit提交到版本库。
  3. 已经add提交到暂存区。
  4. 暂未提交到暂存区,所有修改都在工作区。

​ 接下来就这四种情况说明下如何撤销修改。


  1. 如果push远程仓库了,并且没有远程仓库的管理权限,那就放弃把,没救了。

  2. 已经使用commit提交到了版本库

    因为已经产生了新的提交,所以撤销修改可以使用git reset --hard HEAD^来回退到上一个版本,从而达到撤销修改的效果。

    git reset --hard HEAD^ //撤销之前的commit,并且舍弃之前commit的修改
    git reset --soft HEAD^ //撤销之前的commit,并且保留之前的commit修改
    
  3. 已经使用add提交到暂存区,但是没有使用commit提交到版本库

    因为已经提交到暂存区了,所以撤销修改需要先将提交到暂存区的修改拿回到工作区

    git reset HEAD <file>
    

    命令git reset HEAD <file>可以把暂存区的修改撤销掉,重新放回工作区。==注意该命令和回退版本的命令的区别,因为很相似。==这样所有的修改就回到了工作区,丢弃工作区的修改只需执行以下命令。

    git checkout -- <file>  # 使用 git restore <file> 的效果一样
    

    命令git checkout -- <file>会将工作区的修改撤回到最后一次git addgit commit时的状态。

  4. 文件修改都在工作区,没有提交到暂存区

    丢弃工作区的修改只需要执行一下命令:

    git checkout -- <file>	# 使用 git restore <file> 的效果一样
    

    命令git checkout -- <file>会将工作区的修改撤回到最后一次git addgit commit时的状态。有两种情况,即:

    • 一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
    • 另一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

二、文件删除

​ 文件删除其实也是一个修改动作。当使用rm命令或者通过鼠标右击删除文件时,工作区就产生了修改。这时候有两种选择:

​ 1.确实要从版本库中删除该文件,使用命令git rm <file>然后使用git commit进行提交。PS工作区删除文件后,然后使用git add <file>的效果和直接使用git rm <file>的效果是一样的。
​ 2. 另一种情况是删除错了,这时候只要使用git checkout -- <file>即可把误删的文件恢复到最新版本,最后一次提交后修改的内容会丢失PS:从来没有被添加到版本库就被删除的文件,是无法恢复的!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37284607/article/details/118822368

智能推荐

AndroidStudio_安卓原生开发_Android中调用摄像头拍照_并剪裁图片---Android原生开发工作笔记138_android studio如何调用摄像头-程序员宅基地

文章浏览阅读856次。写一个按钮,点击事件,然后:1.调用代码: openCamera(this);2.粘贴以下代码实现拍照 public void openCamera(Activity activity) { //獲取系統版本 int currentapiVersion = android.os.Build.VERSION.SDK_INT; // 激活相机 Intent intent = new Intent(MediaStore.ACT.._android studio如何调用摄像头

关闭计算机选项中没有休眠,win7系统电脑没有休眠功能的解决方法-程序员宅基地

文章浏览阅读3.3k次。很多小伙伴都遇到过win7系统电脑没有休眠功能的困惑吧,一些朋友看过网上零散的win7系统电脑没有休眠功能的处理方法,并没有完完全全明白win7系统电脑没有休眠功能是如何解决的,今天小编准备了简单的解决办法,只需要按照1、首先打开开始菜单,在搜索框中输入“命令提示符”打开命令提示符窗口,然后输入下面的命令;powercfg -hibernate off (关闭休眠功能)powercfg -hibe..._电脑休眠没有了

使用百度提供的SDK工具_百度sdk测试工具-程序员宅基地

文章浏览阅读6.4k次,点赞2次,收藏6次。介绍SDK工具中接口的功能使用和测试,以及使用SDK的相关流程。_百度sdk测试工具

FBMC-OQAM调制的误码率仿真及Matlab源代码_fbmc-oqam\cp-ofdm,ofdm信号在加性高斯白噪声信道下的误比特率仿真-程序员宅基地

文章浏览阅读112次。误码率(BER,Bit Error Rate)是衡量通信系统性能的重要指标之一,因此对于FBMC-OQAM调制的误码率进行仿真分析具有重要意义。在本文中,我们将介绍如何使用Matlab进行FBMC-OQAM的误码率仿真,并提供相应的源代码。误码率(BER,Bit Error Rate)是衡量通信系统性能的重要指标之一,因此对于FBMC-OQAM调制的误码率进行仿真分析具有重要意义。在本文中,我们将介绍如何使用Matlab进行FBMC-OQAM的误码率仿真,并提供相应的源代码。_fbmc-oqam\cp-ofdm,ofdm信号在加性高斯白噪声信道下的误比特率仿真

关于STM32的编码器计数及溢出处理调试总结_stm32 编码器计算速度 数据溢出怎么处理-程序员宅基地

文章浏览阅读1.6w次,点赞4次,收藏39次。错误1、pc6 pc7被用作其他用途,GPIO模式配置错误。导致计数不准确;错误2、引脚模式设置错误,应该设置为GPIO_Mode_IPD;//GPIO_Mode_IPU GPIO_Mode_IN_FLOATING 都可以;错误3 引脚重映射没有开启AFIO时钟;总结关于编码器的溢出处理:网上的检测数值突变的方法不可靠,会有漏检的情况。在滴答定时器中检测encoder的值突变void SysT..._stm32 编码器计算速度 数据溢出怎么处理

python-pandapower电力系统最优潮流计算(算例1:最优潮流OPF操作讲解))_python潮流计算程序-程序员宅基地

文章浏览阅读1.8k次。python-pandapower电力系统最优潮流计算(算例1:最优潮流OPF操作讲解))_python潮流计算程序

随便推点

纠错编码基本实验matlab,纠错编码基本实验matlab实现包含源代码-程序员宅基地

文章浏览阅读323次。纠错编码基本实验matlab实现包含源代码实验四 纠错编码基本实验一、实验目的1、通过实验理解线性分组码的基本原理;2、练习根据理论分析自行设计实验方法的能力。二、实验内容1、已知一(10,4)线性分组码的生成矩阵为1 1G 0 1001110111 110001110 110110101 101111001试用Matlab求出该码的全部码字和最小汉明距离。152、用Matlab求x..._数字化采样量化与信道卷积纠错编码matlab

关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决_error lnk2005: __lock 已经在 msvcrtd.lib(msvcr120d.dl-程序员宅基地

文章浏览阅读598次。http://www.cnblogs.com/qinfengxiaoyue/archive/2013/02/01/2889668.html--原文1.问题引出很久没有写程序设计入门知识的相关文章了,这篇文章要来谈谈程序库 (Library) 链接,以及关于 MSVC 与 CRT 之间的种种恩怨情仇。如果你使用的操作系统是 Linux、Mac 或其他非 Windo_error lnk2005: __lock 已经在 msvcrtd.lib(msvcr120d.dll) 中定义

计算机辅助设计极坐标,CAD+极坐标各位朋友,我有一个CAD图纸上面有587个点,需要 爱问知识人...-程序员宅基地

文章浏览阅读115次。CAD是计算机辅助制图软件!可以绘2D与3D图形,尤其在服装设计上用处很广~1、基础很重要实践证明,“手工图板”绘图能力是计算机绘图能力的基础,学习《AutoCAD》,需要一定的画法几何的知识和能力,需要一定的识图能力,尤其是几何作图能力,一般来说,我所在的班级中,《工程制图》水平好的学员,学起来较容易些,效果较好!2、循序渐进整个学习过程应采用循序渐进的方式,先了解计算机绘图的基本知识,如相对直..._工程制图与计算机辅助设计极坐标

Python模块学习:logging 日志记录_qpython输出日志-程序员宅基地

文章浏览阅读2.1k次。许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cpp,而在python中,我们不需要第三方的日志组件,因为它已经为我们提供了简单易用、且功能强大的日志模块:logging。logging模块支持将日志信息保存到不同的目标域中,如:保存到日志文件中;以_qpython输出日志

java.io.IOException: Another Balancer is running..  Exiting ._another balancer is running.. exiting ...-程序员宅基地

文章浏览阅读1.2k次。平衡数据报错java.io.IOException: Another Balancer is running.. Exiting ...由于在页面点击取消,但是实际进程还在后台运行,解决方法如下:ps -ef |grep hdfs.sh 之后kill掉即可..._another balancer is running.. exiting ...

shell 学习_regular file, no read permission-程序员宅基地

文章浏览阅读502次。shell脚本的try catch{ # try command1 #save your output} || { # catch # save log for exception }docs http://bbs.chinaunix.net/thread-813011-1-1.html1. 计算“指定路径”下的文件数量_regular file, no read permission