网上关于这个撤销指令的教程多的数不胜数,但是在自己学习中还是遇到一些坑,在此记录下来,也给同样遇到坑的同学一点参考

第一种说法:

第二种说法:

这就出现了两种意思,在我修改了工作区的内容后 使用 git checkout -- <file>到底是从缓存区还是版本库中还原呢 ,对此只有实践才有发言权

第一步:在管理库中添加一个版本:

第二步:在缓存区中添加一个版本:


第三步:修改工作区文档

第四步:第一次使用git checkout -- <file>:

好了这时还原的结果是从缓存区里拉取的还原,貌似CSDN的网友说的更对。别急现在还不能下结论,毕竟廖神怎么会犯这种低级错误呢

第五步:清空缓存区:

附:清空暂存区

所谓的暂存区仅仅是.git目录下的一个index文件罢了,这也是为了什么被称为index(索引)

当删除暂存区内容的时候,其实就是删除index文件中的内容,.git/objects目录中的内容不会被删除。

指令:rm .git/index 直接删除该文件夹即可

第六步:这个时候缓存区没有版本了再次使用git checkout -- <file>:

发现再次执行git checkout -- <file>会报找不到文件,说明git checkout -- <file>不会从版本库中拉取文件

第七步:执行git reset HEAD将HEAD区里HEAD版本给恢复到暂存区

第八步:这个时候缓存区没有版本了再次使用git checkout -- <file>:

结论

通过以上操作,可以得出结论git checkout -- <file>指令是从先从缓存区中拉取版本还原,并不会从版本库中拉取还原。

参考文章:

https://www.jianshu.com/p/285302d1eb73

Git使用汇总之git checkout -- <file>的真正用法相关推荐

  1. Git使用汇总之暂存区工作区撤销和删除

    一.撤掉 1.如果还没 git add file ,使用该指令进行撤销:  git checkout -- fileName 只能清空全部已修改的问题件, 但是对于新建的文件和文件夹无法清空, 必须组 ...

  2. Git使用汇总之工作区、暂存区、版本库

    前言 初次接触git的时候最让人迷惑的无非是这三者的概念和他们之间的关系,搞懂这三个概念和他们之间的关系,可以说你对git了解已经三分熟了. 下面这个图展示了工作区.版本库中的暂存区和版本库之间的关系 ...

  3. 【错误记录】Git 使用报错 ( git: ‘switch‘ is not a git command. See ‘git --help‘. )

    文章目录 一.报错信息 二.解决方案 一.报错信息 执行 git switch -c feature1 命令 , 创建分支 , 报如下错误 : D:\Git\git-learning-course&g ...

  4. 【错误记录】Git 使用报错 ( git branch -a 仍能查询到已经删除的远程分支 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 之前已经执行 git push origin --delete feature1 命令 , 删除了 feature1 远程分支 , 删除操作成功 , ...

  5. Git的撤销操作 git checkout -- <file>

    在项目中我们也经常会使用到撤销操作 使用这一节我们就讲一讲Git的撤销操作 撤销操作主要有如下几种 git commit   --amend        撤销上一次提交  并讲暂存区文件重新提交 g ...

  6. Git撤销文件的修改(git checkout -- file)(git reset HEAD file)(git reset HEAD~)

    1  撤销没有add到暂存储区文件 git checkout -- file 如果我们把文件rm了,git statu肯定会显示出来,我们怎么还原这个文件呢?还是用上面的命令 2  撤销到add到暂存 ...

  7. 如何理解git checkout -- file和git reset HEAD -- file

    [转]https://www.cnblogs.com/instona/p/4243009.html http://www.liaoxuefeng.com/wiki/001373951630592960 ...

  8. Git的撤销操作 git reset HEAD -- <file>

    在项目中我们也经常会使用到撤销操作 使用这一节我们就讲一讲Git的撤销操作 撤销操作主要有如下几种 git commit   --amend        撤销上一次提交  并讲暂存区文件重新提交 g ...

  9. git 撤销文件的修改(checkout/reset )

    使用 git 撤销某个文件的修改,分为两种情况: 情况1:在工作区已修改,但并未提交到暂存区(即并没有add) 撤销单个文件修改,使用下面命令: $ git checkout -- 文件名 若想撤销工 ...

最新文章

  1. python实现nginx图形界面管理
  2. 联想e580没有声音_现在你可以购买通过 Linux 认证的联想 ThinkPad 和 ThinkStation
  3. Java 基础 之 三目运算
  4. 物理、线性、虚拟、逻辑、有效地址
  5. Apache Kafka-CMAK(kafka manager)安装部署使用
  6. 安装setuptools的UnicodeDecodeError
  7. C语言——反弹球游戏(第三阶段
  8. js img图片加载失败,重新加载+断网检查
  9. es mysql 同步插件_[es和数据库怎么同步]mysql与elasticsearch实时同步常用插件及优缺点对比(ES与关系型数据库同步)...
  10. 【python】Flask视图
  11. SQL基础之 基本属性和运算 (一)
  12. Qt5官方demo分析集10——Qt Quick Particles Examples - Emitters
  13. 半个月使用rust语言的体验
  14. 机器视觉最火应用领域
  15. AlphaGo是如何实现的
  16. Android6.0源码下载
  17. word 批量替换空格和回车
  18. open wrt 跟换主题_分享个openwrt主题 可以简单自定义的 主题
  19. 安装qq提示IE浏览器版本低
  20. 上海计算机知识点,上海市考点

热门文章

  1. html宽度自适应怎么调整li超出隐藏,HTML篇之CSS样式——div ul li 嵌套后解决高度自适应方法...
  2. SQLite 作者最新开源力作
  3. Facebook 分享 MySQL 5.6 到 8.0 的迁移经验
  4. 再见!人人影视...
  5. 【mysql】linux安装mysql
  6. softsign激活函数
  7. mxnet根据相似度进行人脸样本对图片清理
  8. 最强Transformer发布!谷歌大脑提出ViT-G:缩放视觉Transformer,高达90.45%准确率!
  9. l2_norm c++代码实现
  10. 多目标跟踪FairMOT笔记