git命令——git rmgit mv

Posted kelamoyujuzhen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git命令——git rmgit mv相关的知识,希望对你有一定的参考价值。

git rm

git rm命令官方解释

删除的本质

在git中删除一个文件,本质上是从tracked files中移除对这些文件的跟踪。更具体地说,就是将这些文件从staging area移除。然后commit。

作用

git rm的作用就是将文件从暂存区删除

git rm的作用就是将文件从工作目录 和 暂存区 删除。

git rm并不能仅仅删除工作目录中的文件,而暂存区保持不变。目前git也没有提供任何参数支持这一功能。要想实现这一目标,只能使用Linux自带的/bin/rm命令

使用场景

彻底删除文件

所谓彻底删除文件,就是在工作目录和暂存区删除文件。由于gir rm不能直接删除工作目录中的文件,于是使用/bin/rm手动删除。此时执行git status 时就会在 “Changes not staged for commit”部分看到,表示没有被更改没有被暂存

技术分享图片
$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with origin/master.
Changes not staged for commit:
    (use "git add/rm <file>..." to update what will be committed)
    (use "git checkout -- <file>..." to discard changes in workingdirectory)
        deleted: PROJECTS.md
no changes added to commit (use "git add" and/or "git commit -a")
View Code

然后再运行 git rm 将文件从暂存区移除

技术分享图片
$ git rm PROJECTS.md
rm PROJECTS.md
$ git status
On branch master
Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)
        deleted: PROJECTS.md
View Code

下一次提交时,该文件就不再纳入版本管理了。 

现在假设这样一组场景,有文件file1.c,file2.c,file3.c。我把file1.c做了修改,并且git add到暂存区。这时候如果向上面那样手动/bin/rm删除file1.c,然后再git rm file1.c,这样没有任何问题。但是如果你跳过/bin/rm file1.c这一步,直接git rm file1.c是不被允许的,报错

技术分享图片
$ git rm file1.c 
error: the following file has changes staged in the index:
    file1.c 
(use --cached to keep the file, or -f to force removal)
View Code

必须要用强制删除选项 -f(即 force 的首字母)。 这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。

只删除暂存区的文件

如果你想保留工作目录中的文件,但是删除对应暂存区中的文件。换句话说,你想让这些保存在磁盘上的文件不再被git跟踪。请使用--cached 选项。为啥会有这种奇怪的需求呢?假设这样一种场景,你忘记了添加.gitignore文件,不小心把很多本应忽略的文件加到了暂存区,这时候就需要这里介绍的做法了。

$ git rm --cached README

git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。 比方说:

$ git rm log/*.log

注意到星号 * 之前的反斜杠 , 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开。

此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:

$ git rm *~

该命令为删除以 ~ 结尾的所有文件。

 

 

 

以上是关于git命令——git rmgit mv的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

git mv 命令 移动或重命名

git 命令 git status add rm commit mv

git学习-git status, git diff, git rm, git mv等文件操作命令解释。

痞子衡嵌入式:第一本Git命令教程- 转移(add/rm/mv)