前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git删除暂存区或版本库中的文件

Git删除暂存区或版本库中的文件

作者头像
程序员小明
发布2019-05-31 13:52:55
3.9K0
发布2019-05-31 13:52:55
举报
文章被收录于专栏:程序员小明

故事前提

小明今天遇到了一个bug,莫名奇妙改着改着就乱了,万分后悔,一心想回退到之前的版本重新开始,不过庆幸的是使用了git托管,一起来看看git作为管理工具的强大之处吧。

基础

Git有三大区(工作区、暂存区、版本库)以及几个状态(untracked、unstaged、uncommited),下面只是简述下Git的大概工作流程,详细的可以参见其他有关Git的文章。

  • 打开你的项目文件夹,除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区,工作区的文件需要添加到Git的暂存区(git add),随后再提交到Git的版本库(git commit)。
  • 首次新建的文件都是untracked状态(未跟踪),此时需要git add到暂存区,Git便会在暂存区中生成一个该文件的索引,文件此时处于uncommited状态,需要git commit生成版本库。添加到了版本库之后,再对文件进行修改,那么文件的状态会变为unstaged状态。 简单的认识了Git的工作流程,接下来便可以看看如何删除错误添加到暂存区或版本库里的文件了!

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

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

仅仅删除暂存区里的文件

此时你想撤销错误添加到暂存区里的文件,可以输入以下命令:

代码语言:javascript
复制
git rm --cache 文件名

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

代码语言:javascript
复制
git status

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

代码语言:javascript
复制
git rm -f 文件名

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

删除错误提交的commit

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

代码语言:javascript
复制
//仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID
代码语言:javascript
复制
//仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID
代码语言:javascript
复制
//彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID

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

  • 如果你是在提交了后,对工作区的代码做了修改,并且想保留这些修改,那么可以使用git reset --mixed 版本库ID,注意这个版本库ID应该不是你刚刚提交的版本库ID,而是刚刚提交版本库的上一个版本库。如下图:
  • 如果不想保留这些修改,可以直接使用彻底的恢复命令,git reset --hard 版本库ID。
  • 为什么不使用--soft呢,因为它只是恢复了版本库,暂存区仍然存在你错误提交的文件索引,还需要进一步使用上一节的删除错误添加到暂存区的文件,详细见上文。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 故事前提
  • 基础
  • 删除错误添加到暂存区的文件
  • 仅仅删除暂存区里的文件
  • 删除暂存区和工作区的文件
  • 删除错误提交的commit
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档