在 Git 中,术语 rm 代表移除。它用于删除单个文件或文件集合。git rm 的关键功能是从 Git 索引中删除跟踪的文件。此外,它还可用于从工作目录和暂存索引中删除文件。
被删除的文件必须是要删除的分支的理想选择。不能在索引中暂存对其内容的更新。否则,删除过程可能很复杂,有时不会发生。但是它可以通过-f选项强制完成。
让我们通过一个例子来理解它。
git rm 命令
git rm 命令用于从工作树和索引中删除文件。
如果我们想从我们的存储库中删除文件。然后就可以通过 git rm 命令来完成。让我们拿一个文件 newfile.txt 来测试 rm 命令。git rm 命令将被操作为:
$ git rm <文件名>
上面的命令将从 Git 和存储库中删除文件。git rm 命令不仅从存储库中删除文件,还从暂存区中删除文件。如果我们检查存储库的状态,它将显示为已删除。考虑以下输出:
在上面的输出中,文件newfile.txt已从版本控制系统中删除。因此存储库和状态显示为已删除。如果我们只使用 rm 命令,那么它不会从 Git 中永久删除文件。它可以在暂存区进行跟踪。考虑以下输出:
在上面的输出中,文件 newfile2.txt 已被删除。但是当我们检查存储库的状态时,我们可以跟踪暂存区中的文件。这意味着 newfile2 尚未从暂存区中删除,并且它也在存储库中可用。我们可以通过提交将其恢复到版本控制系统上。要提交文件,首先将其添加到索引中,然后提交。要将此文件添加到索引中,请运行以下命令:
$ git add newfile2.txt
上面的命令会将文件添加到索引中。要提交它,请运行以下命令:
$ git commit -m "提交消息。"
它将提交文件并使其可用于版本控制系统。考虑以下输出:
在上面的输出中,我们将文件从暂存区检索到我们的目录。newfile2.txt 被重新添加到我们的存储库中。
Git Rm 缓存
有时您想从 Git 中删除文件但将文件保留在本地存储库中。换句话说,您不想在 Git 上共享您的文件。Git 允许您这样做。在这种情况下使用缓存选项。它指定删除操作将仅作用于暂存索引,而不作用于存储库。带有缓存选项的 git rm 命令将用作:
$ git rm --cached <文件名>
上面的命令将从版本控制系统中删除一个文件。删除的文件将保留在存储库中。不知何故,此命令将充当 rm 命令。让我们通过一个例子来理解它。
假设我们要从 Git 中删除一个文件,以newfile1.txt为操作来删除这个文件,使用下面的命令:
$ git rm --cached newfile1.txt
上述命令将从版本控制系统中删除该文件,但仍然可以在存储库中对其进行跟踪。它也可以在版本控制系统上重新添加。要检查文件状态,请使用 status 命令:
$ git status
考虑以下输出:
从上面的输出中我们可以看到,newfile1.txt 文件从版本控制系统中被删除了,但它可以在存储库中进行跟踪。此文件在版本控制系统上作为未跟踪文件提供。我们可以通过提交来跟踪它。
撤消 Git Rm 命令
git rm 命令的执行不是永久性的;执行后可以恢复。在对存储库进行新提交之前,这些更改无法持久保存。我们可以撤消 git rm 命令。有几种方法可以做到这一点。最常用和直接的方法是 git reset 命令。git reset 命令将按如下方式使用:
$ git reset HEAD
或者我们也可以使用:
$ git reset --hard
上面的命令将重置头部的位置。这样它将获得其前一个点的位置。考虑以下输出:
从上面的输出中,我们可以看到文件已经成功重置到之前的位置。
还有另一种方法可以撤消 git rm 命令。我们也可以通过 git checkout 命令来完成。签出具有相同的效果并从 HEAD 恢复文件的最新版本。它将按如下方式使用:
$ git checkout.
Git Rm 命令的限制
git rm 只在当前分支上操作。删除过程仅适用于工作目录和登台索引树。在创建新提交之前,它不会保留在存储库历史记录中。