git - 为什么 git-rm 与 git-add 不相反?

标签 git

文件可以被跟踪或取消跟踪。我们通过执行“git add”开始跟踪文件。

现在假设我们要停止跟踪一个文件。我会假设“git rm”是要走的路。我的期望是通过“git rm”我们使文件“未跟踪”。然而,实际上我们完全删除了文件。为什么?以及如何使文件不被跟踪(不删除它)。

最佳答案

停止跟踪文件的命令是git rm --cached .

请记住,Git 使用索引来准备下一次提交。您使用 git add 将工作树中的文件添加到索引.

从项目中完全删除文件比取消跟踪更常见。这就是为什么 git rm从项目中完全删除文件,即从工作目录和索引中删除。

为了仅从您拥有的存储库中删除文件,实际上是将其从索引中删除(或者更准确地说,将其标记为已删除),因为这是准备下一次提交的地方。 --cached 选项告诉 git rm 这件事。 (请注意,其他命令也使用 --cached 来引用存储在索引中的文件副本)。

关于git - 为什么 git-rm 与 git-add 不相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47532428/

相关文章:

git - TortoiseGit 和 Pageant,每次都必须为 "add key"

git "loose object ... is corrupt"- 我丢失了什么数据?

Github 远程推送包大小超限

git - 如何让 COMMIT_EDITMSG 从正确的位置打开?

git - 如何获取git存储库中所有文件的数量?

git - 错误地使用 "git add ."从库 "node_modules"目录中添加数百个文件,如何在 git commit 之前撤消此操作?

git - Dockerhub 自动构建多个私有(private)仓库

git - 为什么 git log --cherry-pick 没有删除等效的提交?

git - 如何重启 git/GitHub 项目?

git - Google 容器构建器,为新分支创建新命名空间