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

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


当前回答

在2.23版本之后,Git引入了Git恢复命令,你可以使用它来恢复。引用官方文件:

类中的某些内容恢复工作树中的指定路径 恢复源。如果跟踪的路径在恢复中不存在 源,它将被删除以匹配源。 该命令还可以用于恢复索引中的内容 ——staging,或者使用——staging——worktree恢复工作树和索引。

因此,您可以调用git restore——staging <path>并取消该文件,但同时保留所做的更改。请记住,如果文件没有暂存,则会丢失对其所做的所有更改。

其他回答

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

git checkout -- <file>

Git重置<文件>

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

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

git reset -p

or

git reset -p <file_name>

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

git reset filename.txt

如果在filename.txt中有修改,则是您错误地将其添加到stage,并且希望从staging中删除该文件,但又不想丢失所做的更改。

git rm --cached FILE

,

git rm -r --cached CVS */CVS