如何从git中的索引中删除文件?
如何从索引中删除文件(= staging area = cache)而不从文件系统中删除它?
你要:
git rm --cached [file]
如果你省略了--cached
选项,它也会从工作树中删除它。 git rm
比git 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