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呢,因为它只是恢复了版本库,暂存区仍然存在你错误提交的文件索引,还需要进一步使用上一节的删除错误添加到暂存区的文件,详细见上文。

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

  1. [git]入门-工作区、暂存区、版本库

    转载整理自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256 ...

  2. 【Git】(1)---工作区、暂存区、版本库、远程仓库

    工作区.暂存区.版本库.远程仓库 一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或 ...

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

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

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

    基本概念 我们等来理解下Git工作区.暂存区和版本库概念 工作区:就是你在电脑里能看到的目录 强烈推荐git新手阅读 暂存区:英文叫stage,或index.一般存放在igt 目录下的index文件( ...

  5. Git-Runoob:Git 工作区、暂存区和版本库

    ylbtech-Git-Runoob:Git 工作区.暂存区和版本库 1.返回顶部 1. Git 工作区.暂存区和版本库 基本概念 我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电 ...

  6. Git 工作区、暂存区和版本库、操作流程

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

  7. 【第四篇】-Git 工作区、暂存区和版本库之Spring Cloud直播商城 b2b2c电子商务技术总结

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

  8. git工作区、暂存区、版本库之间的关系

    区分三者关系 Git最让你迷惑的无非是它里面的各种概念了,如果是刚开始接触Git希望看完本篇介绍之后有一个清晰的认识,笔者认识也有限这里只说说个人对使用Git的感受,说一下它里面的几个最常用的概念的理 ...

  9. Git使用指南(2)——工作区,暂存区,版本库

    1 工作区修改添加到暂存区 git add 2 暂存区提交到版本库 git commit 3 版本库更新到暂存区 git reset HEAD 4 删除暂存区文件 git rm --cached< ...

随机推荐

  1. Meanshift均值漂移算法

      通俗理解Meanshift均值漂移算法  Meanshift车手?? 漂移?? 秋名山???   不,不,他是一组算法,  今天我就带大家来了解一下机器学习中的Meanshift均值漂移. Mea ...

  2. C/C++字符串相关知识使用整理

    C++字符串处理有最原始的char以及string两种方式,这里对其常用的功能进行总结. #include <string>using namespace std; ]; string s ...

  3. CSS基础一

    css作用 css将内容和样式相分离,便于修改样式.HTML 写网页的内容,CSS写内容的样式 CSS构成 p{ /*p为标签,也可以称为选择器,选择包住的内容的格式*/ font-size:12px ...

  4. vue路由独享守卫beforeEnter

    在某个路由中,使用beforeEnter()方法,参数是to,from,next 和全局路由守卫的用法是一样的 例子: import Vue from 'vue' import Router from ...

  5. Educational Codeforces Round 58 (Rated for Div. 2) G 线性基

    https://codeforces.com/contest/1101/problem/G 题意 一个有n个数字的数组a[],将区间分成尽可能多段,使得段之间的相互组合异或和不等于零 题解 根据线性基 ...

  6. python线程——创建和启动

    可以通过实例化一个threading.Thread()对象来创建子线程. import threading import time def listen_music(num): print(" ...

  7. MySQL 多表结构的创建与分析

    =====================多对一===================== create table press( id int primary key auto_increment, ...

  8. PDF分享:国外优秀数学教材选评

    <国外优秀数学教材选评>推荐书目下载 具体内容请查看原内容: http://www.library.fudan.edu.cn/wjzx/list/373-1-20.htm 或者http:/ ...

  9. Notes : <Hands-on ML with Sklearn & TF> Chapter 7

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  10. sublime text3如何在浏览器预览?

    插件: view-in-browser CTRL + ALT + V 打开浏览器 默认打开firefox,settings里面可修改. Sublime Text - View In Browser V ...