git撤销已经add的文件 git删除已经add的文件 git移除已经add的文件 git rm --cache 和 git reset HEAD 的区别是什么 rm -rf 注意事项 缺乏、安全感 2023-09-28 19:08 57阅读 0赞 #### 目录 #### * 引言 * 解决问题 * * git rm --cached 指令 * git rm --f 指令 * 补充git reset指令 * git rm --cache 和 git reset HEAD 的区别 * rm -rf指令的注意事项 ## 引言 ## 今天在`ant design pro`项目中,新建两个文件且已经`git add`了,但又想删除这两个文件,如下图所示: ![在这里插入图片描述][49a6c59863fc4f768b3e9dcd3683473a.png] 那怎么处理呢? ## 解决问题 ## 使用 git rm 命令即可,有两种选择: ### git rm --cached 指令 ### 使用如下指令删除: git rm --cached "文件路径" 这种方式,**不删除物理文件,仅将该文件从缓存中删除。** 比如我要删除`src/utils/constants/ApiContant`下的`ApiContant.ts`文件,可以执行如下命令: git rm --cached src/utils/constants/ApiContant 删除结果如下图所示: ![在这里插入图片描述][b029392980af4ddaa428eb8c1fd386da.png] `ApiContant.ts`文件在第一张图中是绿色的,表示已经在本地缓存文件中了。 但执行这个命令`git rm --cached src/utils/constants/ApiContant`后,`ApiContant.ts`文件由绿色变为红色,说明该文件已从缓存中移除了。 最后,在文件夹中删除`ApiContant.ts`文件即可,如下图所示: ![在这里插入图片描述][26b3d79559e2452a829a54cdfbecb60e.png] 说明`ApiContant.ts`文件已从物理地址中删除了。 还剩`apiConstant.ts`文件。当然,这个文件也要删除,但使用另一种方式删除。 ### git rm --f 指令 ### 使用如下指令删除: git rm --f "文件路径" 这种方式,**不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)。** 比如我要删除`src/utils/constants/apiConstant`下的`apiConstant.ts`文件,可以执行如下命令: git rm --f src/utils/constants/apiConstant 删除结果如下图所示: ![在这里插入图片描述][57f6e301fd7045ff92ef5952d19eb933.png] 这种删除方式,存在一个问题,如果当前文件的父目下没有其他文件,就会删除真个父目录,如上图所示。 当前文件的父目下存在其他文件,只删除当前文件,如下所示: ![在这里插入图片描述][58ba812c58be47fba0611ffba4a15357.png] 执行命令`git rm --f src/utils/constants/apiConstant.ts`,删除`apiConstant.ts`文件,如下图所示: ![在这里插入图片描述][ad28cf837e0447da917022d71b14a4fc.png] ## 补充git reset指令 ## **这里的 “已经 add” 不等同于 “已经 commit”。** 如果要撤销上一次提交的话,可以使用以下命令: git reset --soft commit_id `commit_id`通过`git log`命令获取,复制上一次提交的`commit_id`,粘贴即可,如下所示: ![在这里插入图片描述][77416fecf7c94de29f2c2075652ab82e.png] ## git rm --cache 和 git reset HEAD 的区别 ## 如果要删除文件,最好用 `git rm file_name`,而不应该直接在工作区直接 `rm file_name`。 如果一个文件已经`add到暂存区,还没有commit`,此时如果不想要这个文件了,有两种方法: 1. 用版本库内容清空暂存区:`git reset HEAD` 2. 只把特定文件从暂存区删除:`git rm --cached xxx` ## rm -rf指令的注意事项 ## 创建目录:`mkdir` 创建文件:`touch` `linux` 删除目录很简单,很多人还是习惯用 `rm dir`,不过一旦目录非空,就陷入深深的苦恼之中。 直接 `rm` 就可以了,不过要加两个参数 `-rf` 即: rm -rf “目录名字” * \-r 就是向下递归,不管有多少级目录,一并删除 * \-f 就是直接强行删除,不作任何提示的意思 **使用这个 rm -rf 的时候一定要格外小心,linux 没有回收站的** [49a6c59863fc4f768b3e9dcd3683473a.png]: https://img-blog.csdnimg.cn/49a6c59863fc4f768b3e9dcd3683473a.png [b029392980af4ddaa428eb8c1fd386da.png]: https://img-blog.csdnimg.cn/b029392980af4ddaa428eb8c1fd386da.png [26b3d79559e2452a829a54cdfbecb60e.png]: https://img-blog.csdnimg.cn/26b3d79559e2452a829a54cdfbecb60e.png [57f6e301fd7045ff92ef5952d19eb933.png]: https://img-blog.csdnimg.cn/57f6e301fd7045ff92ef5952d19eb933.png [58ba812c58be47fba0611ffba4a15357.png]: https://img-blog.csdnimg.cn/58ba812c58be47fba0611ffba4a15357.png [ad28cf837e0447da917022d71b14a4fc.png]: https://img-blog.csdnimg.cn/ad28cf837e0447da917022d71b14a4fc.png [77416fecf7c94de29f2c2075652ab82e.png]: https://img-blog.csdnimg.cn/77416fecf7c94de29f2c2075652ab82e.png
还没有评论,来说两句吧...