如何从git中的索引中删除文件?
如何从索引中删除文件(= staging area = cache)而不从文件系统中删除文件?
你要:
git rm --cached [file]
如果您省略--cached
选项,它也会从工作树中删除它。 git rm
比git reset
要安全一些,因为如果分阶段内容与分支的尖端或磁盘上的文件不匹配,你会被警告。 (如果没有,则必须添加 - --force
。)
这应该为你取消一个<file>(不删除或修改文件):
git reset HEAD <file>
根据您的工作流程,这可能是您需要的很少的事情,以至于无法找出命令行解决方案(除非由于某种原因,您碰巧没有使用图形界面)。
只需使用其中一种支持索引管理的基于GUI的工具,例如:
git gui
< - 使用Tk窗口框架 - 与gitk
类似的风格 git cola
< - 更现代的GUI界面 这些功能可让您通过点击来将文件移入和移出索引。 他们甚至支持在索引中选择和移动文件的部分内容(单个更改)。
从另一个角度来看如何:如果在使用建议的,相当神秘的命令之一时搞砸了:
git rm --cached [file]
git reset HEAD <file>
...你有可能失去数据 - 或者至少很难找到。 除非你真的需要这么做,否则使用GUI工具可能会更安全 。
没有索引的工作
根据评论和投票,我意识到很多人一直在使用索引。 我不。 就是这样:
git commit -a
git commit (list of files)
git commit -a
然后通过git gui
修改 git difftool --dir-diff --tool=meld