一.使用linux命令rm删除:
在当前工作区有文件readme.txt,并被git跟踪,且有提交历史。运行如下命令:
rm readme.txt
分析如下:
(1)readme.txt文件的状态是被删除。
(2)此时工作区中的文件已经被删除,
(3)Changes not staged for commit 表明删除文件和新增文件对Git来说都是一种改变,并没有将此改变提交到暂存区。如果要切实在commit提交中也要删除此文件,那么就要首先将此种改变提交暂存区:
git add readme.txt
然后完成此次提交:
git commit -m
"delete readme"
二.使用git rm命令删除:
通过纯粹的linux命令删除一个文件需要三个步骤:
(1)rm 删除文件。
(2)将此种改变提交暂存区。
(3)最后进行commit提交。
使用git rm命令可以节省一步,代码如下:
git rm readme.txt
查看一下此时状态:
分析如下:
(1)readme.txt处于deleted状态。
(2)工作区中的文件已经被删除。
(3)Changes to be committed表明此删除改变已经提交到暂存区,如果要切实在commit提交中也要删除此文件,就可以省略git add命令,直接commit提交即可。
git commit -m "delete readme"
三.使用--cached参数:
前面的rm和git rm都会将工作区的文件删除,如果仅仅想让文件脱离Git的跟踪,可以后面加--cached。
这样工作区的文件不会删除,仅删除暂存区中对应的文件。
代码如下:
git
rm
readme.txt --cached
查看一下状态:
readme.txt处于未跟踪状态,也就是从暂存区删除。
特别说明:处于未跟踪状态只是没有存在于暂存区,历史提交记录中的记录依然存在。
附:清空暂存区
所谓的暂存区仅仅是.git目录下的一个index文件罢了,这也是为了什么被称为index(索引)
当删除暂存区内容的时候,其实就是删除index文件中的内容,.git/objects目录中的内容不会被删除。
指令:rm
.git
/index 直接删除该文件夹即可