如何从git中的索引中删除文件?

hcs*_*s42 328 git

如何从索引(= staging area = cache)中删除文件而不将其从文件系统中删除?

Joh*_*lla 460

你要:

git rm --cached [file]
Run Code Online (Sandbox Code Playgroud)

如果省略该--cached选项,它也会从工作树中删除它.git rm比稍微安全一些git reset,因为如果分段内容与分支的尖端或磁盘上的文件不匹配,将会收到警告.(如果没有,你必须添加--force.)

  • 这也会在您提交和推送后从repo(远程)删除该文件. (19认同)
  • 如果你不小心检查了一些没有进入你的.gitignore的构建中间件或本地配置文件,这也很有用.使用`git rm --cached`将它们从repo中删除,将相关文件或目录添加到.gitignore,正常进行阶段和提交.它们将从回购中消失,但在当地的树上保持不变,你不会再意外地检查它们. (6认同)
  • 这个答案很可能是错误的,因为它从存储库中删除了一个文件(正如 @powder366 已经提到的),这不是预期的结果。 (5认同)
  • 这个解决方案对我不起作用。它将指定的文件标记为已删除,然后将其从本地存储库中删除。 (3认同)
  • 这不会将其从索引中删除,而是在索引中将其标记为已删除。 (2认同)
  • 这不应该被接受,因为它会从存储库中删除文件。 (2认同)

Dav*_*ill 121

这应该为您取消<file>(不删除或以其他方式修改文件):

git reset <file>
Run Code Online (Sandbox Code Playgroud)

  • 这将删除特定文件的最新更改,但在提交和推送后将其保留在repo(远程)中. (6认同)
  • 这就是我一直在寻找的答案。请注意,您不必指定“HEAD”。 (2认同)

Abd*_*oor 5

git reset HEAD <file> 
Run Code Online (Sandbox Code Playgroud)

用于从索引中删除特定文件。

git reset HEAD

用于删除所有索引文件。