在Git中,rm代表的是remove(删除)。它用于删除单个文件或一组文件。git rm的主要功能是从Git索引中删除被跟踪的文件。此外,它还可以用于从工作目录和暂存索引中删除文件。
被删除的文件必须符合分支的理想状态。它们的内容不应该在索引中进行过任何更新。否则,删除过程可能会变得复杂,有时甚至不会发生。但可以通过 -f 选项强行删除。
让我们通过一个示例来理解。
git rm命令
git rm命令用于从工作目录和索引中删除文件。
如果我们想要从我们的仓库中删除文件,可以使用git rm命令来实现。假设我们有一个名为newfile.txt的文件进行rm命令的测试。git rm命令的操作如下:
$ git rm <file Name>
上述命令将从Git和存储库中删除该文件。git rm命令不仅会从存储库中删除文件,还会从暂存区中删除。如果我们检查存储库的状态,那么它将显示为已删除。请看下面的输出:
$ git add newfile2.txt
上面的命令将文件添加到索引中。要提交它,请运行下面的命令:
$ git commit -m "commit message."
它将提交文件并使其在版本控制系统中可用。请考虑以下输出:
在上面的输出中,我们正在从暂存区将文件检出到我们的目录中。newfile2.txt被重新添加到我们的仓库中。
Git Rm Cached
有时候你想从Git中删除文件,但是仍然想要在本地仓库中保留这些文件。换句话说,你不想在Git上分享你的文件。Git允许你这么做。在这种情况下可以使用cached选项。它指定删除操作只在暂存区上生效,而不会影响仓库。git rm命令加上cached选项的使用方式如下:
$ git rm --cached <file name>
上述命令将从版本控制系统中删除一个文件。已删除的文件将保留在存储库中。不知何故,此命令将作为rm命令的作用。让我们通过一个示例来理解它。
假设我们想要从Git中删除一个文件,选择 newfile1.txt 进行操作,使用以下命令:
$ git rm --cached newfile1.txt
上述命令将从版本控制系统中删除该文件,但仍然可以在存储库中跟踪。它也可以重新添加到版本控制系统中。要检查文件状态,请使用以下命令:
$ git status
请考虑下面的输出:
从上面的输出可以看出,newfile1.txt文件被从版本控制系统中删除,但它仍然可以在仓库中被追踪。这个文件在版本控制系统中作为一个未跟踪文件而存在。我们可以通过提交来跟踪它。
撤销git rm命令
git rm命令的执行是不永久的,它可以在执行后进行撤销。这些变更在仓库上直到进行新的提交之前都不会生效。我们可以撤销git rm命令的操作。有几种方法可以做到这一点。最常见和直接的方法是使用git reset命令。git reset命令将按以下方式使用:
$ git reset HEAD
或者我们也可以使用:
$ git reset --hard
上述命令将重置头的位置,使其获取其刚刚前一个点的位置。请考虑下面的输出:
从上面的输出中,我们可以看到文件已成功重置到之前的位置。
还有另一种方法来撤销git rm命令。我们也可以通过git checkout命令来实现。checkout会产生相同的效果,从HEAD中恢复文件的最新版本。用法如下:
$ git checkout.
Git Rm命令的限制
git rm仅在当前分支上操作。删除过程仅应用于工作目录和暂存索引树。直到创建新的提交信息前,删除操作不会在存储库历史中持久保留。