如何从Git的登台区域中删除单个文件,但是不能从索引中删除它,或者撤销对文件本身的更改?

情况:我有一个已经在索引中的文件的Git仓库。 我修改了几个文件,打开Git并用“git add”将这些文件添加到我的临时区域。

问题:如何从暂存区域中删除其中一个文件,但是不能将其从索引中删除,或撤消文件本身的更改?

如果我正确地理解了这个问题,你只需要“撤销”为该文件完成的git add

如果是这样的话,那么git reset HEAD -- <file>将完成这项工作。 如果您需要从暂存区域中删除整个目录(文件夹),请使用

git reset HEAD -- <directoryName>

你的修改将被保留。 当你运行git status ,文件会再次显示为已修改,但尚未暂存。

有关详细信息,请参阅git reset手册页 。

 git rm --cached FILE 

 git rm -r --cached CVS */CVS 

git reset <file>

无论您是否有任何以前的提交,

所以,对Tim Henigan的回答略作调整:你需要在文件名之前使用。 它看起来像这样:

 git reset HEAD -- <file> 

如果你想删除某些模式下的文件,而且你正在使用git rm --cached ,那么你也可以使用file-glob模式。

看到这里 。

如果您只想删除文件的一部分更改,您可以使用:

 git reset -p 

要么

 git reset -p <file_name> 

这个命令基本上与git add -p相反:它只会从暂存区域中删除所选的更改。 我发现它是非常有用的“未加载”,我误添了一些东西。

您需要在文件的目录中,然后在terminal中input以下内容

 git reset HEAD . 

假设你只需要重置一个文件。

你要:

  • 影响到单个文件

  • 从暂存区域删除文件

  • 不从索引中删除单个文件

  • 不要撤消更改本身

和解决scheme是

 git reset HEAD file_name.ext 

要么

 git reset HEAD path/to/file/file_name.ext 

要立即停止所有操作,请运行此命令

 git reset HEAD -- . 

git checkout -- <file>

它完美地从分段区域移除文件

就我而言,我是这么做的

 git checkout -- FILE