git rm --cached和'deleted'状态

时间:2013-03-16 22:54:46

标签: git msysgit

我想知道为什么我这样做:

git add <file>

之后,我做了:

git rm --cached <file>

该文件在阶段área中保持已删除状态。

这里的例子如下: enter image description here

正在寻找有关该文件“已删除”状态的说明。

由于

2 个答案:

答案 0 :(得分:7)

尝试git reset HEAD yourFile,而不是git rm --cached

混合重置会从索引中删除您的文件,而不会将其从工作树中删除 请参阅“Undo 'git add' before commit”。

在您的情况下,git stash需要在<{1}}之前,然后git reset会在重置后恢复正在进行的更改。


关于git rm --cached之后的“git stash pop”状态,该命令在索引中注册文件的删除,这就是为什么你看到它被记录为下次提交的“已删除”的原因。

OP Ferpega insists

  

我问为什么删除状态是由deleted产生的,因为此命令应该与git rm --cached中的git reset HEAD <file>具有相同的行为。

嗯,不,git rm的行为与[git reset][8]的行为不同 两者都会影响索引,但是:

  • 一个(git rm)将在下次提交时记录删除的文件,因此为“deleted”状态,
  • 另一个(git reset)会将HEAD复制到索引,将所述索引重置为文件在HEAD中的内容。

答案 1 :(得分:0)

您已将文件添加到索引/缓存(屏幕截图中为绿色)并告知您要删除该文件。索引/缓存更改仅在提交完成时执行。

我想你可能把一个文件放在索引/缓存中,然后想删除它(所以它不会被提交)。

执行此操作的命令位于git status给出的消息中(位于带圆圈的deleted上方。

git reset HEAD <filename>