0 基础

    我们知道Git有三大区(工作区、暂存区、版本库)以及几个状态(untracked、unstaged、uncommited),下面只是简述下Git的大概工作流程,详细的可以参见本博客的其他有关Git的文章【链接】。 
  (1)打开你的项目文件夹,除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区,工作区的文件需要添加到Git的暂存区(git add),随后再提交到Git的版本库(git commit)。
  (2)首次新建的文件都是untracked状态(未跟踪),此时需要git add到暂存区,Git便会在暂存区中生成一个该文件的索引,文件此时处于uncommited状态,需要git commit生成版本库。添加到了版本库之后,再对文件进行修改,那么文件的状态会变为unstaged状态。
    简单的认识了Git的工作流程,接下来便可以看看如何删除错误添加到暂存区或版本库里的文件了!

1 删除错误添加到暂存区的文件

    有时你在工作区新建了文件TestFile,并且已经将它添加到了暂存区,git会告知,现有有一个文件未提交到版本库,如下图:
 
 

1.1 仅仅删除暂存区里的文件

    此时你想撤销错误添加到暂存区里的文件,可以输入以下命令:
  1. git rm --cache 文件名

    
    上面的命令仅仅删除暂存区的文件而已,不会影响工作区的文件,如上图,TestFile.txt仍然存在,此时输入下面命令,git会告知有一个未跟踪的文件TestFile.txt。

  1. git status

1.2 删除暂存区和工作区的文件

  1. git rm -f 文件名

    工作区的文件也被删除了。
    

 

2 删除错误提交的commit

    有时,不仅添加到了暂存区,而且commit到了版本库,这个时候就不能使用git rm了,需要使用git reset命令。
    错误提交到了版本库,此时无论工作区、暂存区,还是版本库,这三者的内容都是一样的,所以在这种情况下,只是删除了工作区和暂存区的文件,下一次用该版本库回滚那个误添加的文件还会重新生成。
    这个时候,我们必须撤销版本库的修改才能解决问题!
    git reset有三个选项,--hard、--mixed、--soft。
//仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID

//仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID

//彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID

那我们到底应该用哪个选项好呢?

    (1)如果你是在提交了后,对工作区的代码做了修改,并且想保留这些修改,那么可以使用git reset --mixed 版本库ID,注意这个版本库ID应该不是你刚刚提交的版本库ID,而是刚刚提交版本库的上一个版本库。如下图:
    (2)如果不想保留这些修改,可以直接使用彻底的恢复命令,git reset --hard 版本库ID。
    (3)为什么不使用--soft呢,因为它只是恢复了版本库,暂存区仍然存在你错误提交的文件索引,还需要进一步使用上一节的删除错误添加到暂存区的文件,详细见上文。

转载于:https://www.cnblogs.com/cposture/p/git.html

【原创】Git删除暂存区或版本库中的文件相关推荐

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

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

  2. Git 工作区、暂存区和版本库

    基本概念 我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电脑里能看到的目录 暂存区:英文叫stage, 或index.一般存放在 ".git目录下" 下的ind ...

  3. Git 的工作区、暂存区、版本库—— Git 学习笔记 15

    Git 的工作区.暂存区.版本库 大家都知道,在 Git 系统中有 "三棵树" 的概念. 注意:"树" 在这里的意思是 "文件集合",而不是 ...

  4. Git学习笔记之三:Git 工作区、暂存区和版本库

    基本概念我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电脑里能看到的目录. 暂存区:英文叫stage, 或index.一般存放在 ".git目录下" 下的ind ...

  5. Git的学习之路02 Git的工作流程、工作区、暂存区、版本库及创建版本库

    Git的一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修改. 提交修改. 在修改完成后,如果发现错误,可以撤回提 ...

  6. 2.Git的工作区、暂存区和版本库(慕课网)

    先来理解下Git工作区.暂存区和版本库概念 工作区:就是你在电脑里能看到的目录. 暂存区:英文叫stage, 或index.一般存放在".git目录下" 下的index文件(.gi ...

  7. 【Git】Git概述、Git安装和使用、工作区,暂存区和版本库

    文章目录 一 Git概述 1 Git简介 2 GIt的职责 3 Git的架构 (1)集中式版本控制系统 (2)分布式版本控制系统 4 下载安装 二 Git使用 1 创建版本库 2 配置签名 (1)方法 ...

  8. git中的工作区,暂存区,版本库

    git status  用于查看哪些文件被暂存了 红色:工作区与版本库之间对比 ,说明没有被暂存 git add .  (工作区的内容添加到暂存区) 黄绿色:暂存区和版本库,说明被暂存

  9. git 理解 节点、工作区、暂存区、版本库

    git树结构: git树结构每个节点都是一个commit的快照,它包含了三个重要概念:节点,HEAD指针,Branch指针 1.节点:git使用commit之后就会生成一个节点,之前的节点成为这个节点 ...

最新文章

  1. 专治选择综合征——Bandit算法
  2. spring简单总结part2
  3. [导入]用Ext做的登陆窗口的例子
  4. 使用ultramon调整任务栏高度
  5. gluPerspective的具体含义
  6. 期刊投稿状态_追踪期刊在线系统投稿状态(十七)
  7. 18C 也不能避免 SQL 解析的 Bug
  8. 通讯框架 t-io 学习——给初学者的Demo:ShowCase设计分析
  9. wordpress修改mysql端口_Wordpress更改端口后访问自动跳转老端口
  10. 知识变现 常用课程制作实用工具大全(建议保存)
  11. 怎样把mysql表转换为hbase表_导出table数据库表
  12. [Python图像处理] 合成微缩效果
  13. 内置函数sum与sum(list,[])
  14. Windows系统下批量重命名文件(超详细操作讲解)
  15. Ubuntu 20.04.2.0 LTS 更改默认关联视频播放器VLC的方法
  16. 高级职称17计算机,(高级职称计算机考试.doc
  17. 网络协议基础知识大全
  18. linux 时间与定时器编程原理,浅析 Linux 中的时间编程和实现原理-嵌入式-火龙果软件工程...
  19. Linux 已修改ip地址(ONBOOT=yes),但是不显示ip地址
  20. 【Visual C++】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术 Direct3D渲染五步曲

热门文章

  1. 终于,我读懂了所有Java集合——set篇
  2. centos安装nginx,配置负载均衡
  3. VIM使用系列之一——配置VIM下编程和代码阅读环境
  4. python源代码现成重用大全
  5. Linux(16)-Vim编辑器的使用
  6. 机器学习知识总结系列-机器学习中的优化算法总结(1-4)
  7. 含有js的英文单词_JavaScript 常用单词整理
  8. 操作系统 内存管理相关知识
  9. Android设计模式之——策略模式
  10. 机动车驾驶人科目三考试项目及合格标准