zoukankan      html  css  js  c++  java
  • 【原创】Git删除暂存区或版本库中的文件

    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呢,因为它只是恢复了版本库,暂存区仍然存在你错误提交的文件索引,还需要进一步使用上一节的删除错误添加到暂存区的文件,详细见上文。
  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/cposture/p/git.html
Copyright © 2011-2022 走看看