git 文件恢复与项目还原:008

2023-11-10

1. 【文件恢复】:将文件恢复到上一次提交的状态

注意:新建且没有提交的文件无法使用文件恢复

命令:

git checkout -- 文件名

假如我们的一开始是这样的,这是没有报错的状态文件

 然后我添加了一段内容, 比如我添加这段内容项目报错了, 我需要恢复到没有报错的状态

方法一:代码比较,找到修改的内容将其修改回来,这种方法只适用修改比较少的情况。这种方法不做演示

方法二:文件恢复,将文件恢复到未被修改的状态

首先使用git status查看一下状态, 可以看到这个文件是未被追踪状态

然后可以使用命令:git checkout -- test_file.txt  将文件恢复到未被修改的状态

1.1:撤销追踪:对于那些已经使用了git add 的文件, 这时候是无法对文件进行恢复的,需要将文件撤销追踪才能对文件使用恢复功能

假如我们对文件进行一个修改, 并对他使用 git add 命令

这个时候使用  checkout 命令是无法起作用的,如下,文件还是无法恢复到未被修改状态

 这个时候就需要使用命令 git reset HEAD 文件名  对它进行追踪撤销。

 然后使用 git status 命令查看当前文件状态,可以看到该文件是未添加到缓存区一个状态, 这个时候就可以对这个文件使用 checkout 命令来恢复了

恢复命令,可以看到文件已经被恢复了

2. 【版本还原】

命令:

git reset -- hard DEAD^  回退到上一个版本

git reset -- hard DEAD^^  回退到上上一个版本

git reset -- hard  版本号  指定退回到指定版本(注意不能使用HEAD。且一旦回退到指定版本, 那指定版本之前的版本都会消失,所以不建议使用)

git checkout 版本号 -- 文件名  将指定文件退回指定版本(不会删除历史版本)

git checkout 版本号 -- .   将所有文件回退到指定版本(不会删除历史版,版本回退时建议使用这个命令,要注意的是文件恢复命令,版本号还是原来的版本号,版本描述也是原来的版本描述)

首先查看一下版本号:git log --oneline  如下可以看到,有5个版本号,当前项目一共有5次提交记录。这个是从下往上来排序的

回退到上一个版本:git reset --hard HEAD^   (haed是强行的意思、HEAD是指针的意思,这里回退到上一个版本,所以加^)

回退到上上个版本也是一样,这里就不再演示:git reset --hard HEAD^^

不建议使用(因为指定版本之前的版本会消失):退回到指定版本,假如我想回退到“描述信息”这个版本,这时就可以使用命令:git reset --hard 版本号

建议使用:git checkout 版本号 -- .(回退到指定版本,之前的版本不会消失,注意, 这个实际上是文件恢复,将所有文件恢复到指定版本,版本号不会更新,版本描述也不会更新):

git checkout 版本号 -- 文件名    (将指定文件回退到指定版本,这里就不演示了)

git checkout 版本号 -- .    (将所有文件回退到指定版本,这里就不演示了)

完毕!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 文件恢复与项目还原:008 的相关文章

  • 如何从 Git 存储库中删除选定的提交日志条目,同时保留其更改?

    我想从线性提交树中删除选定的提交日志条目 以便这些条目不会显示在提交日志中 我的提交树看起来像 R A B C D E HEAD 我想删除 B 和 C 条目 以便它们不会显示在提交日志中 但应保留从 A 到 D 的更改 也许通过引入单个提交
  • Git Hook - 在我推送到 github 后让服务器拉取

    我有一个本地存储库 并且我在实时服务器上设置了另一个存储库 www site com projects ProjectA 我想要实现的目标非常简单 在我推送到 GitHub 后 我想要存储库位于www site com projects P
  • Git hook:如果创建了新分支,则将新文件添加到存储库

    我正在编写一个 git hook 它检查是否创建了新分支 如果是 则将一些预定义文件添加到该新分支的存储库中 一些配置文件 然而 由于分支实际上正在创建过程中 所以我的逻辑失败了 目前我正在这样做post receive钩子 看起来像这样
  • 如何应用 .diff 文件

    我有一个 diff 类型文件 看起来像爆炸了 diff git a res User lua b res User lua index db8c2cc 4d2af0f 100644 a res User lua b res User lua
  • git Push Remote:警告:hooks.mailinglist 有多个值

    我刚刚从使用 gitosis 升级到 gitolite 电子邮件通知适用于所有存储库 但对于 gitolite admin 存储库 我在推送时收到此警告 推送很好 git push remote warning hooks announce
  • 为什么 git 默认执行快进合并?

    来自 Mercurial 我使用分支来组织功能 当然 我也希望在我的历史中看到这个工作流程 我使用 git 开始了我的新项目并完成了我的第一个功能 当合并该功能时 我意识到 git 使用快进 即如果可能的话 它会将我的更改直接应用到主分支
  • 设置 Git osxkeychain 错误

    我正在设置 Git 并且正在关注http lifehacker com 5983680 how the heck do i use github http lifehacker com 5983680 how the heck do i u
  • GIT 或 SVN 或...适用于前端开发人员

    我最近开始将一些项目导入到工作中的 Subversion 存储库中 在接下来的几周内 我希望团队中的每个人都能负责自己的源代码控制管理 我选择 SVN 而不是 GIT 的原因是我想要everyone团队中的人员 包括设计师 前端人员 集成商
  • 在我的 gemfile 中指定来自 Github 的 gem 的分叉版本时出现“无法找到 gem”错误

    我正在尝试使用这个分叉版本 http github com railsdog searchlogicsearchlogic gem 的 在我的 gemfile 中 我有 gem searchlogic git gt http github
  • 如何仅对最新合并后的提交进行变基?

    考虑以下场景 我从master那里检查了一个分支 我做了一些承诺 我合并了更新的master 我做了更多的承诺 现在我想要从第 4 点开始变基提交 以便从第 2 点开始的提交不受影响 所以如果我最初有 1 2 x x x x x x x m
  • Git合并策略:空格使默认显示不冲突并带来意想不到的结果

    经过多次试验 我得到了这个简单的测试用例场景 a gt b gt c master gt d gt b gt e branch Where b 是樱桃精选b e is a merge from master b 之后完成c and c对相同
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • GIT:向非当前分支添加本地更改

    我通常会遇到这样的情况 我做了一些本地更改 却发现我在错误的分支上进行了更改 因此我需要在提交之前切换分支 问题是当有本地更改时我无法切换分支 有办法做到这一点吗 显然 我可以复制更新的文件 切换分支 然后将它们复制回来 但这看起来并不聪明
  • libgit2 返回:Refspec 'refs/heads/origin/HEAD' 在 TortoiseGit 中未找到错误

    启动 TortoiseGit 时出现此错误 无法获取所有参考文献 libgit2 返回 未找到 Refspec refs heads origin HEAD 虽然很烦人 但这并不妨碍我使用 TortoiseGit 然而 我想让它消失 因为它
  • git 查找胖提交

    是否可以获取有关每次提交中的更改浪费了多少空间的信息 以便我可以找到添加了大文件或大量文件的提交 这一切都是为了尝试减少 git repo 的大小 变基并可能过滤提交 你可以这样做 git ls tree r t l full name H
  • 包括来自raw.github.com的js

    我有一个 github com 演示页面 链接到https raw github com master file js https raw github com master file js这样我就不需要总是复制 js文件转移到gh pag
  • 如何使用 vim 作为“git log”编辑器?

    当我跑步时git log 编辑器到底是什么git log正在使用 Also 无论如何我可以使用吗vim作为我的默认编辑器git log 如果我想搜索 git 日志 最好的方法是什么 现在我正在做类似的事情 git log grep bla
  • git:检查标签,修改某些内容,然后再次标记它

    我觉得我应该知道这一点 但我很困惑 我在 github 上分叉了一个存储库 我需要的是签出一个标签 称为 v1 0 5 修改文件上的语句 使用名为 1 0 5 的新标签 不带 v 重新标记该状态 然后执行对 master 进行同样的更改 让
  • 中止 `git stash apply` [重复]

    这个问题在这里已经有答案了 我很遗憾应用了存储 错误的分支 我如何撤消此操作并将我的存储返回到我的存储列表 以便稍后将其应用到正确的分支 如果你还没有承诺 你应该能够git stash再次 可能与git reset HEAD first A
  • 无法从 Git 扩展向 GitHub 进行身份验证?

    我只是在 Visual Studio 2010 中设置 Git 扩展 但无法真正使其工作 我无法进行身份验证 在 Git Extensions 中 如果我选择 Plugins gt GitHub 我可以添加用户 密码 API 令牌并选择 S

随机推荐

  • USB数据接口类型

    为了方便下载数码相机记忆体中的文件 数码相机和PC的连接有多种方式 常见的就是USB接口和IEEE1394火线接口 USB与IEEE1394比较 两者的传输速率不同 过去 很多人都会选用IEEE1394作传输文件用 因为其流量比USB1 1
  • 开环与闭环传递函数波特图的意义

    注 本文默认读者都是控制类专业 先复习一下奈氏曲线和奈氏判据 以及波特图 下面进入今天的主题 开环与闭环传递函数波特图的意义 分为如下三个部分 开环波特图的意义 闭环波特图的意义 为什么大多研究开环波特图 开环与闭环传递函数 一个典型的控制
  • stm32学习—库函数总结

    库函数总结这一章 描述了一般stm32开发的流程 一些常用库函数的设置 一般一开始是使用结构体进行数据的初始化 然后通过使用的途径进行划分 比如常用的数据的输出和输出 这在大部分的外设中都是大量涉及的 再接是辅助我们进行逻辑代码的设计的状态
  • 如何在Java项目中定义并调用自己编写的native方法?

    如何在Java项目中定义并调用C C 编写的native方法 开发工具 编写测试的java代码 编写C 代码 将dll文件链接到java项目中 总结 开发工具 IntelliJ IDEA 2020 用来编写java代码 Visual Stu
  • 关于Markdown表格中如何进行换行、合并单元格

    关于Markdown表格中如何进行换行 合并单元格 1 表格中内容对齐 换行 设置对齐方式 表格内容换行 2 表格中单元格的合并 合并表格行 合并表格列 综合使用 1 表格中内容对齐 换行 常规表格使用 一般我们都会这样用表格如下 姓名 年
  • Kruskal算法求解最小生成树

    最小生成树是一个连通图 什么是连通图 强 连通图详解前面介绍了 图存储结构 本节继续讲解什么是 连通图 前面讲过 图中从一个顶点到达另一顶点 若存在至少一条路径 则称这两个顶点是连通着的 例如图 1 中 虽然 V1 和 V3http c b
  • 空间相关分析(三) 局部莫兰指数的理解与计算

    在上篇中 我们详细地阐述了全局莫兰指数 Global Moran I 的含义以及具体的软件实操方法 今天 就来进一步地说明局部莫兰指数 Local Moran I 的含义与计算 首先说明一下进行局部相关分析的必要性 在全局相关分析中 如果全
  • Java8新特性之时间API

    本篇主要介绍Java 8中新引入的全新的一套时间API Java 8之前的Date类的缺陷 java util包和java sql包中都有一个Date类 区别是util包中的Date类存储的是年月日时分秒 而sql包中的Date只存储年月日
  • 小程序随机生成文字卡片文案海报,带分享保存

    概述 文字随机生成 更换头像 生成卡片 保存卡片 分享卡片 详细 文字随机生成 更换头像 生成卡片 保存卡片 分享卡片 数据是在data js中 随机文案获取 demo直接在微信开发者工具可以运行 index xml 代码
  • python字典中的键是什么_python字典中的键是什么

    字典的键 字典中的值没有任何限制 可以是任意Python对象 即从标准对象到用户自定义对象皆可 但是字典中的键是有类型限制的 1 不允许一个键对应多个值 必须明确一条原则 每个键只能对应一个项 也就是说 一键对应多个值是不允许的 像列表 元
  • 银联商务MISPOS接口开发demo 需要调用POSINF.DLL

    1 接口文档 1 1 无gmc界面接口 dll ocx dll调用 posinf dll 函数名为 int bankall char request char response 其中第一个参数为传入参数 ocx调用 umsocx ocx t
  • Mavenx学习笔记二十二:Maven仓库(从仓库解析依赖的机制)

    Maven仓库 从仓库解析依赖的机制 Maven是根据怎样的规则从仓库解析并使用依赖构件的呢 当本地仓库没有依赖构件的时候 Maven会自动从远程仓库下载 当依赖版本为快照版本的时候 Maven会自动找到最新的的快照 这背后的依赖解析机制可
  • gcc编译提示错误“multiple definition of“

    在做OS实验的过程中 由实验书给出的代码 仍然无法通过编译 查到了很多方法 比如条件编译等等 但经过多次尝试后发现并没有效果 终于在网上找到了一篇能够解决问题的文章 原因是 gcc版本太高 需要降低gcc版本 查看当前gcc版本 gcc v
  • CUDA协作组详解

    CUDA中的协作组 1 协作组简介 Cooperative Groups 是 CUDA 9 中引入的 CUDA 编程模型的扩展 用于组织通信线程组 协作组允许开发人员表达线程通信的粒度 帮助他们表达更丰富 更有效的并行分解 从历史上看 CU
  • 关于C++中的条件编译

    2019独角兽企业重金招聘Python工程师标准 gt gt gt C 中的条件编译 分为三种形式 分别如下 1 ifdef define name else endif 这种形式的条件编译 意思大概就是 如果定义了宏define name
  • Typora+PicGo-Core+腾讯云COS 图床配置教程

    typora PicGo Core 腾讯云COS 图床配置教程 前言 1 typora PicGo Core 腾讯云COS 图床 分别是什么 为什么把他们组合在一起 typoa是一个能做Markdown的一个软件 我们可以在里面编辑文本 添
  • 掌优始终坚持技术价值与社会价值并重

    上公交车时无需任何操作 乘客只需将脸对准智能人脸识别设备即可 刷脸乘车 已不是新鲜事 全国各省市都在紧锣密鼓地推进 智慧交通 的建设 在我国上海 北京 济南 广州等地区 乘客可以直接在地铁站的人脸识别终端或自助票务机进行注册和拍照上传 之后
  • Redfish接口测试

    Redfish接口测试 1 Postman使用 2 登录BMC 获取session 3 获取服务器资产信息 4 服务器上下电 5 创建BMC用户 6 删除BMC用户 7 获取指定BMC用户的信息 8 修改指定BMC用户信息 9 获取指定BM
  • SpringBoot 集成XxlJob定时任务使用过程

    POM文件
  • git 文件恢复与项目还原:008

    1 文件恢复 将文件恢复到上一次提交的状态 注意 新建且没有提交的文件无法使用文件恢复 命令 git checkout 文件名 假如我们的一开始是这样的 这是没有报错的状态文件 然后我添加了一段内容 比如我添加这段内容项目报错了 我需要恢复