运行git rm时文件何时从索引中删除?

时间:2017-06-16 16:04:27

标签: git

通过运行git rm命令从项目中删除文件时,文件何时从索引中实际删除?提交删除时是删除它还是在运行git rm时删除它?

根据我的理解,git rm涉及以下步骤:

  1. 从索引中删除文件
  2. 从工作目录中删除文件
  3. 提交文件删除
  4. 我只是不确定文件是从索引开始删除还是提交删除。这些步骤也是正确的吗?

2 个答案:

答案 0 :(得分:4)

它立即发生,但此时没有提交。也就是说,只有第1步和第2步适用。

考虑索引的一个好方法是,它是所有内容的第三个​​副本 - 或者实际上是第二个副本,而工作树是第三个。也就是说,在任何时候,你都有:

  • 当前提交,又称(也称为)HEAD或有时@。由于这是一个提交,因此根本无法更改。
  • 建议的下一次提交,也就是索引,也就是暂存区域,也就是缓存。 (为什么有三个名字?嗯,这是Git。:-))这不是 - 提交,所以你可以改变它。但它是一种特殊的Git形式,很难查看或使用存储在其中的任何文件。
  • 工作树,其中包含您(以及您的计算机的其余部分)可以使用它们的表单中的文件。工作树中还可以包含未跟踪的文件(其中一些文件可以被忽略以及未跟踪) - 索引不能包含未跟踪文件,因为根据定义,索引中的任何内容都是跟踪。

请注意,您可以在此处双向复制文件:从HEAD到索引,从索引到工作树,或从工作树到索引。但由于提交永远不会被更改,因此您无法从索引复制回HEAD。 (你所做的是将 new 提交副本从索引转换为新提交。当然,新提交是永久性的。)

答案 1 :(得分:0)

当您运行git rm时,它会从索引&中删除文件工作目录。

参考 - git-rm