博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】Git删除暂存区或版本库中的文件
阅读量:6720 次
发布时间:2019-06-25

本文共 1374 字,大约阅读时间需要 4 分钟。

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

你可能感兴趣的文章
EntLib 3.1学习笔记(1) : Caching Application Block
查看>>
组合模式
查看>>
C++指针专题
查看>>
在asp.net中关于<% %>,用法总结
查看>>
Go-插入排序
查看>>
LeetCode-76-Minimum Window Substring
查看>>
oracle插入数据时解决和旧数据id的冲突
查看>>
linux yum命令详解
查看>>
struts——拦截器
查看>>
程序员软件
查看>>
Android学习记录--使用继承ListActivity 注意事项
查看>>
CodeForces 1082 G Petya and Graph 最大权闭合子图。
查看>>
python IO编程-StringIO和BytesIO
查看>>
Gradle构建Java Web应用:Servlet依赖与Tomcat插件(转)
查看>>
各种ESB产品比较(转)
查看>>
redis来共享各个服务器的session,并同时通过redis来缓存一些常用的资源,加快用户获得请求资源的速度(转)...
查看>>
mysql
查看>>
log4net配置使用说明(转)
查看>>
[SPOJ-TTM]To the moon
查看>>
BZOJ1192 鬼谷子的钱袋
查看>>