如何从索引(暂存区=缓存)中删除文件而不从文件系统中删除文件?
#1楼
这应该为您取消暂存<file>(而不删除或修改文件):
git reset <file>
#2楼
你要:
git rm --cached [file]
如果省略--cached
选项,它也会从工作树中将其删除。 git rm
比git reset
安全一些,因为如果暂存的内容与分支的尖端或磁盘上的文件都不匹配,则会警告您。 (如果没有,则必须添加--force
。)
#3楼
根据您的工作流程,这可能是您几乎不需要的东西,因此试图找出命令行解决方案毫无意义(除非由于某种原因而碰巧没有图形界面)。
只需使用一种支持索引管理的基于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
#4楼
git reset HEAD <file>
用于从索引中删除特定文件。
和
git reset HEAD
用于删除所有索引文件。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3192000