一文读懂Git删除文件操作


起初,我还没理解 Git “ 一般只添加数据” 的设计思想,直到深入学习Git的文件删除并实践后,才摸着一些门道,特此记录。

1. 已修改,未暂存,未提交:第一次创建

在这里插入图片描述
对应Git中的操作如下:
在这里插入图片描述
即Untracked files。这类文件由于没有被Git跟踪,所以直接命令行rm或文件夹手动删除即可。正因为没有被Git跟踪,如果使用git rm,就会报错:fatal: pathspec ‘test’ did not match any files
在这里插入图片描述

2. 已修改,已暂存,未提交:准备第一次提交

在这里插入图片描述
对应Git中的操作如下:
在这里插入图片描述
即Changes to be committed,即将提交。此时如果rm:
在这里插入图片描述
看起来没什么问题,但status显示还是有新文件test待提交,说明test只是在当前工作目录下不可见,无法再修改,但还在暂存区。下面的commit也验证了这一点
在这里插入图片描述
此时的test,已经进入到了暂存区,但又并未被Git所跟踪。对于这类文件,Git给予了高度重视,因为一旦删除它,就意味着后面再也无法通过查看历史提交记录来恢复。所以如果一定要删除,必须加上强制删除选项 -f,用于防止误删还没有提交过的数据。即git rm -f
在这里插入图片描述

3. 已修改,已暂存,已提交,未修改:第一次提交

在这里插入图片描述
对应Git中的操作如下:
在这里插入图片描述
由于test1刚被提交,所以Git已经有了跟踪记录。由于提交后还未修改,所以只需要执行git rm,即可删除。这里所谓的删除,指的是下次提交的版本中,没有test1文件了,想要找回test1,还是可以通过历史提交记录找回的。看到这里,想必可以理解Git “一般只添加数据” 的设计思想了doge。
在这里插入图片描述

4. 多次提交,已修改/已暂存:已有记录,有新修改

在这里插入图片描述
这是最后一种场景,与场景三不同的是,这里有新的修改,意味着:虽然仓库已有记录,但很可能需要更新。所以Git也给予了一定程度的重视,对于这类文件的删除,有两种方案:

  1. 先执行rm,后执行git rm
  2. 直接执行git rm -f

多次提交,已修改,先执行rm,后执行git rm 为例:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40466537/article/details/129794560