9

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

git add <file>

之后,我会:

git rm --cached <file>

该文件在舞台区域中保持已删除状态。

这里的例子: 在此处输入图像描述

只是在寻找有关文件“已删除”状态的解释。

谢谢

4

2 回答 2

11

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

混合重置将从索引中删除您的文件,而不会将其从工作树中删除。
请参阅“提交前撤消git add”。

在您的情况下, agit stash需要在之前git reset然后 agit stash pop将在重置后恢复您正在进行的更改。


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

OP Ferpega坚持

我在问为什么会出现已删除的状态,git rm --cached因为该命令的行为应该与git reset HEAD <file>您在git rm.

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

  • one (the git rm) 将在下一次提交时记录要删除deleted的文件,因此是 ' ' 状态,
  • 另一个 ( git reset) 将 HEAD 复制到索引,将所述索引重置回 HEAD 中的文件。
于 2013-03-16T23:06:39.340 回答
2

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

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

执行此操作的命令在消息中git status为您提供(在带圆圈的deleted.

git reset HEAD <filename>
于 2013-03-16T23:46:06.157 回答