情况:我有一个Git存储库,索引中已经有文件。我修改了几个文件,打开Git,用“Git add”把这些文件添加到我的暂存区。

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


当前回答

你想要的:

影响到单个文件 从暂存区删除文件 不能从索引中删除单个文件 不要撤消更改本身

答案是

git reset HEAD file_name.ext

or

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

其他回答

要立即取消所有操作,运行此命令

git reset HEAD -- .

Git重置<文件>

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

您需要在文件的目录中,然后在终端中输入以下内容

git checkout -- <file>

对于新版本的Git,有Git restore——staging <file>。

当我用git 2.26.2.windows做git状态时。1 .也建议用于取消分期:

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)

(这篇文章显示,在早期版本git重置HEAD在这一点上是推荐的)

我强烈推荐这篇文章,解释了git恢复、git恢复和git重置之间的区别,以及git恢复的附加参数。

如果您只是想删除文件更改的子集,您可以使用:

git reset -p

or

git reset -p <file_name>

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