git撤销已经add的文件 git删除已经add的文件
git撤销已经add的文件 git删除已经add的文件
![](https://csdnimg.cn/release/devpress/public/img/ic-book.4f347164.png)
原文地址:https://blog.csdn.net/lvoelife/article/details/126222976
引言
今天在ant design pro项目中,新建两个文件且已经git add了,但又想删除这两个文件,如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/d246e0874f9200c80188e520c09e0cde.png)
那怎么处理呢?
解决问题
使用 git rm 命令即可,有两种选择:
git rm --cached 指令
使用如下指令删除:
git rm --cached "文件路径"
这种方式,不删除物理文件,仅将该文件从缓存中删除。
比如我要删除src/utils/constants/ApiContant下的ApiContant.ts文件,可以执行如下命令:
git rm --cached src/utils/constants/ApiContant
删除结果如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/6894744836ec4fcb7cdd63aa69c2169c.png)
ApiContant.ts文件在第一张图中是绿色的,表示已经在本地缓存文件中了。
但执行这个命令git rm --cached src/utils/constants/ApiContant后,ApiContant.ts文件由绿色变为红色,说明该文件已从缓存中移除了。
最后,在文件夹中删除ApiContant.ts文件即可,如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/f6afefb3a3df70ff8118fd37822d2084.png)
说明ApiContant.ts文件已从物理地址中删除了。
还剩apiConstant.ts文件。当然,这个文件也要删除,但使用另一种方式删除。
git rm --f 指令
使用如下指令删除:
git rm --f "文件路径"
这种方式,不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)。
比如我要删除src/utils/constants/apiConstant下的apiConstant.ts文件,可以执行如下命令:
git rm --f src/utils/constants/apiConstant
删除结果如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/d3fd4460964d9c079350a2b682ba06e3.png)
这种删除方式,存在一个问题,如果当前文件的父目下没有其他文件,就会删除真个父目录,如上图所示。
当前文件的父目下存在其他文件,只删除当前文件,如下所示:
![](https://img-blog.csdnimg.cn/img_convert/1771c55e9afdaf9f3cf371e4d8dc1b42.png)
执行命令git rm --f src/utils/constants/apiConstant.ts,删除apiConstant.ts文件,如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/505f9a367cfced0bc22ae56e9df50ab4.png)
补充git reset指令
这里的 “已经 add” 不等同于 “已经 commit”。
如果要撤销上一次提交的话,可以使用以下命令:
git reset --soft commit_id
1
commit_id通过git log命令获取,复制上一次提交的commit_id,粘贴即可,如下所示:
![](https://img-blog.csdnimg.cn/img_convert/863801f652013c4d96bc4845f3262fb2.png)
git rm --cache 和 git reset HEAD 的区别
如果要删除文件,最好用 git rm file_name,而不应该直接在工作区直接 rm file_name。
如果一个文件已经add到暂存区,还没有commit,此时如果不想要这个文件了,有两种方法:
用版本库内容清空暂存区:git reset HEAD
只把特定文件从暂存区删除:git rm --cached xxx
rm -rf指令的注意事项
创建目录:mkdir
创建文件:touch
linux 删除目录很简单,很多人还是习惯用 rm dir,不过一旦目录非空,就陷入深深的苦恼之中。
直接 rm 就可以了,不过要加两个参数 -rf 即:
rm -rf “目录名字”
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
更多推荐
所有评论(0)