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

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


你要:

git rm --cached [file]

如果您省略--cached选项,它也会从工作树中删除它。 git rmgit 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
  • 链接地址: http://www.djcxy.com/p/50867.html

    上一篇: How to remove a file from the index in git?

    下一篇: Git diff for added file