当前位置:首页 > 技术分析 > 正文内容

Git回滚指定的文件

ruisui882个月前 (03-08)技术分析15

GIT

前文介绍过Git回滚,回滚的上某个提交,Git也可以回滚某个提交的某个文件

如果对git reset不太熟悉,可以参考前文:Git回滚代码(git reset)

通过指定文件文件回滚

现在对一个文件test.txt已经经过了三次提交,文件内容从v1->v2->v3。先看看提交历史,查看历史通过git log命令。

$ git log
commit e54cfa3872518a8c9d14c1c778b76d1963999338 (HEAD -> master)
Author: Java猿 <1351891797@qq.com>
Date:   Sat Jun 25 10:37:20 2022 +0800

    v3

commit 618d1658b3635e0529a3347aedf1413e57bf9568
Author: Java猿 <1351891797@qq.com>
Date:   Sat Jun 25 10:36:45 2022 +0800

    v2

commit 360b025b94d2bfa4933be4a69c14ab8cf8527d11
Author: Java猿 <1351891797@qq.com>
Date:   Sat Jun 25 10:35:14 2022 +0800

    v1

HEAD

此时修改了工作区的test.txt内容为v4并且提交到暂存区后,如果想撤回可以执行命令git reset HEAD test.txt,执行后暂存区的内容会回滚到v3。

修改工作区和暂存区的文件版本:

修改工作区和暂存区的文件版本

执行reset后的版本:

执行reset后的版本

$ git ls-files -s
100644 c694117fd4e76c22ae04348c15861413019aa03b 0       test.txt
$ git cat-file -p c694117fd4e76c22ae04348c15861413019aa03b
v4
$ git reset HEAD test.txt
Unstaged changes after reset:
M       test.txt
$ git ls-files -s
100644 b3b96777307e3b8d0e833c26b6d28cd202056e5c 0       test.txt
$ git cat-file -p b3b96777307e3b8d0e833c26b6d28cd202056e5c
v3
$ cat test.txt
v4

上面的命令git ls-files -s是查看暂存区的文件,git cat-file -p commit-id查看某个提交的文件内容,在回滚前文件是v4,执行完暂存区的文件内容为v3,而工作区的内容为v4。

此时的HEAD的指针上不变的,通过git log查看:

$ git log -1
commit e54cfa3872518a8c9d14c1c778b76d1963999338 (HEAD -> master)
Author: Java猿 <1351891797@qq.com>
Date:   Sat Jun 25 10:37:20 2022 +0800

    v3

git reset HEAD 这个命令实现了撤销暂存区的内容,和git rm --cached filename在某些情况下是一样的。git rest必须已经提交了的文件,git rm --cached可以删除未提交的。

回滚指定提交的文件

使用git reset指定路径可以回滚某次提交的文件,使用的命令为git reset filename。此时文件版本都是v3,如下所示:

当前的版本

执行git reset filename后的文件版本:

reset后的版本

$ git log
commit e54cfa3872518a8c9d14c1c778b76d1963999338 (HEAD -> master)
Author: Java猿 <1351891797@qq.com>
Date:   Sat Jun 25 10:37:20 2022 +0800

    v3

commit 618d1658b3635e0529a3347aedf1413e57bf9568
Author: Java猿 <1351891797@qq.com>
Date:   Sat Jun 25 10:36:45 2022 +0800

    v2

commit 360b025b94d2bfa4933be4a69c14ab8cf8527d11
Author: Java猿 <1351891797@qq.com>
Date:   Sat Jun 25 10:35:14 2022 +0800

    v1

$ git ls-files -s
100644 b3b96777307e3b8d0e833c26b6d28cd202056e5c 0       test.txt
$ git cat-file -p b3b96777307e3b8d0e833c26b6d28cd202056e5c
v3
$ cat test.txt
v3
$ git reset 360b025b94d2bfa4933be4a69c14ab8cf8527d11 test.txt
Unstaged changes after reset:
M       test.txt
$ git ls-files -s
100644 28c218c44b49222f91536daf5b4d9871638edc8e 0       test.txt
$ git cat-file -p 28c218c44b49222f91536daf5b4d9871638edc8e
v1
$ cat test.txt
v3

后续把git的回滚操作录个视频,欢迎留言讨论,谢谢!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2620.html

标签: git删除commit
分享给朋友:

“Git回滚指定的文件” 的相关文章

厅监控结算中心加强高速公路联网收费系统运行管理

厅监控结算中心加强高速公路联网收费系统运行管理,一是严格PSAM卡管理要求,加强跟踪各营运公司PSAM卡使用情况,切实做到PSAM卡专人保管,定期核查,做好联网收费系统基础安全工作。二是督促各营运公司加强3G备份链路管理,保障数据应急通道的畅通,确保车道数据正常传输。三是落实标识站建设工作,督促各营...

Git 分支管理策略与工作流程

(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。看完这篇文章后,涉及GIT的工作中就会减少因为规范问题导致工作出错,当然如果你现在暂时还未有合...

GitLab 14.6发布,优化Geo高可用,安全更新等

昨天,GitLab官方按照管理发布了有一个月度版本GitLab 14.6的发布,这也是本年度收官版本。14.6中在安全合规性方面,在Geo方面以及MD代码块一键复制等方便做了优化,另外还在UI图标方面发布了一套全新的图标。详细情况请和虫虫一起学习。GitLab 14.6主要改进使用 Geo 实现无缝...

12种JavaScript中最常用的数组操作整理汇总

数组是最常见的数据结构之一,我们需要绝对自信地使用它。在这里,我将列出 JavaScript 中最重要的几个数组常用操作片段,包括数组长度、替换元素、去重以及许多其他内容。1、数组长度大多数人都知道可以像这样得到数组的长度:const arr = [1, 2, 3]; console.log(a...

从 Vue2.0 到 React17——React 开发入门

作者:佚名来源:前端大全前言找工作时发现有一些公司是以React作为技术栈的,而且薪资待遇都不错,为了增加生存的筹码,所以还是得去学一下React,增加一项求生技能。因为我用Vue2.0开发项目已经四年了,故用Vue2.0开发项目的思路来学习React。前端项目是由一个个页面组成的,对于Vue来说,...

基于Spring Cloud+VUE的多租户小程序商城源码「快速二开可商用」

一、系统介绍JooLun平台是一个专注微信快速二开系统研发的平台,采用Java语言开发,使用的是最新微服务前后端分离技术,目前有公众号和小程序商城两个版本,有公众号后台管理、小程序商城。基于Spring Cloud微服务+VUE实现的核心框架多租户小程序商城源码,核心框架采用SpringBoot2+...