一文读懂Git删除文件操作
Git 各场景下的文件删除
- 1. 已修改,未暂存,未提交:第一次创建
- 2. 已修改,已暂存,未提交:准备第一次提交
- 3. 已修改,已暂存,已提交,未修改:第一次提交
- 4. 多次提交,已修改/已暂存:已有记录,有新修改
起初,我还没理解 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也给予了一定程度的重视,对于这类文件的删除,有两种方案:
- 先执行rm,后执行git rm
- 直接执行git rm -f
以 多次提交,已修改,先执行rm,后执行git rm 为例:

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
