代码之家  ›  专栏  ›  技术社区  ›  ferpega

git-rm—缓存和“已删除”状态

  •  10
  • ferpega  · 技术社区  · 11 年前

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

    git add <file>
    

    之后,我会:

    git rm --cached <file>
    

    文件保留在 删除 中的状态 阶段面积 .

    以下是示例: enter image description here

    我是 只有 正在查找有关文件上“已删除”状态的说明。

    谢谢

    2 回复  |  直到 11 年前
        1
  •  11
  •   Community Tales Farias    7 年前

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

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

    在你的情况下 git stash 需要 先于 这个 git reset ,然后 git stash pop 将在重置后恢复正在进行的更改。


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

    这个 OP Ferpega insists :

    我在问为什么由于 git-rm—缓存 因为该命令的行为应该与 git reset HEAD <file> 正如你在中看到的那样 git rm .

    嗯,不,a 移除文件 具有与[ git reset][8] .
    两者都会影响指数,但:

    • 一个( 移除文件 )将为录制一个文件 删除 在下一次提交时,因此 删除 '状态,
    • 另一个( 数位复位 )将HEAD复制到索引,将所述索引重置回HEAD中的文件。
        2
  •  2
  •   David Culp    11 年前

    您将该文件添加到索引/缓存中(屏幕截图中为绿色),并告诉get您想删除该文件。只有在提交完成时才会执行索引/缓存更改。

    我认为您可能将一个文件放在索引/缓存中,然后想要删除它(这样就不会提交它)。

    执行此操作的命令在消息中 git status 给你(圆圈正上方 deleted .

    git reset HEAD <filename>