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

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

你要:

git rm --cached [file] 

如果你省略了--cached选项,它也会从工作树中删除它。 git rmgit reset要安全一点,因为如果分阶段的内容不匹配分支的顶端或者磁盘上的文件,你会被警告。 (如果没有,则必须添加 – --force 。)

这应该为你取消一个<file>(不删除或修改文件):

 git reset HEAD <file> 

根据您的工作stream程,这可能是您需要的很less的事情,以至于无法找出命令行解决scheme(除非由于某种原因,您碰巧没有使用graphics界面)。

只需使用支持索引pipe理的基于GUI的工具之一,例如:

  • git gui < – 使用Tk窗口框架 – 与gitk类似的风格
  • git cola < – 更现代的GUI界面

这些可以让您通过点击来将文件移入或移出索引。 他们甚至支持从索引中select和移动文件的部分(单个更改)。


不同的angular度如何:如果你使用build议,相当神秘的命令之一搞砸了:

  • git rm --cached [file]
  • git reset HEAD <file>

…你有一个失去数据的真正机会 – 或者至less很难find。 除非你真的需要这么做,否则使用GUI工具可能会更安全


没有索引的工作

基于评论和投票,我意识到很多人一直在使用索引。 我不。 就是这样:

  • 提交我的整个工作副本(典型案例): git commit -a
  • 只提交几个文件: git commit (list of files)
  • 提交所有的几个修改后的文件: git commit -a然后通过git gui 修改
  • 以graphics方式查看对工作副本的所有更改: git difftool --dir-diff --tool=meld