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

限于喜欢 提交于 2020-03-11 21:34:50

如何从索引(暂存区=缓存)中删除文件而不从文件系统中删除文件?


#1楼

这应该为您取消暂存<file>(而不删除或修改文件):

git reset <file>

#2楼

你要:

git rm --cached [file]

如果省略--cached选项,它也会从工作树中将其删除。 git rmgit 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

用于删除所有索引文件。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!