原文地址:https://blog.csdn.net/lvoelife/article/details/126222976

引言

今天在ant design pro项目中,新建两个文件且已经git add了,但又想删除这两个文件,如下图所示:

那怎么处理呢?

解决问题

使用 git rm 命令即可,有两种选择:

git rm --cached 指令

使用如下指令删除:

git rm --cached "文件路径"

这种方式,不删除物理文件,仅将该文件从缓存中删除。

比如我要删除src/utils/constants/ApiContant下的ApiContant.ts文件,可以执行如下命令:

git rm --cached src/utils/constants/ApiContant

删除结果如下图所示:

ApiContant.ts文件在第一张图中是绿色的,表示已经在本地缓存文件中了。

但执行这个命令git rm --cached src/utils/constants/ApiContant后,ApiContant.ts文件由绿色变为红色,说明该文件已从缓存中移除了。

最后,在文件夹中删除ApiContant.ts文件即可,如下图所示:

说明ApiContant.ts文件已从物理地址中删除了。

还剩apiConstant.ts文件。当然,这个文件也要删除,但使用另一种方式删除。

git rm --f 指令

使用如下指令删除:

git rm --f "文件路径"

这种方式,不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)。

比如我要删除src/utils/constants/apiConstant下的apiConstant.ts文件,可以执行如下命令:

git rm --f src/utils/constants/apiConstant

删除结果如下图所示:

这种删除方式,存在一个问题,如果当前文件的父目下没有其他文件,就会删除真个父目录,如上图所示。

当前文件的父目下存在其他文件,只删除当前文件,如下所示:

执行命令git rm --f src/utils/constants/apiConstant.ts,删除apiConstant.ts文件,如下图所示:

补充git reset指令

这里的 “已经 add” 不等同于 “已经 commit”。

如果要撤销上一次提交的话,可以使用以下命令:

git reset --soft commit_id

1

commit_id通过git log命令获取,复制上一次提交的commit_id,粘贴即可,如下所示:

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 就是直接强行删除,不作任何提示的意思

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐