如何撤销git add(从暂存区删除所有文件)?

ndh0cuux  于 2023-09-29  发布在  Git
关注(0)|答案(3)|浏览(119)

假设我在暂存区域(或索引)中放置了很多文件,但现在我想撤消此操作,删除所有文件(如果它们被删除,它们都是错误的,这并不重要)。我在某个地方读到我应该做一个git reset,但是因为我还没有提交这些文件,这不会实际上删除我以前的提交,这实际上是正确的,我现在试图保留哪些代码?
在我的理解中,只有当我实际提交了这些更改时才能工作,因此这个提交将被删除,HEAD现在将是前一个提交。我错过了什么?我知道这里有类似的帖子,但答案总是指向git重置,这正是我不明白的地方。

yvfmudvl

yvfmudvl1#

git reset将还原暂存区以反映当前提交。(HEAD). git status将报告没有暂存更改。这实际上会撤消您可能执行的所有git addgit rm --cached命令。
git reset是一个复杂的命令,可以做很多事情。如果你使用git commit <commit-id>,那么HEAD将被移动到那个提交--如果没有其他引用(分支,标签)指向最近的提交,可能会丢失最近的提交。
git reset不指定提交将不会移动HEAD。
git resetgit reset --mixed相同,它将暂存区恢复到当前提交
git reset --hard将把暂存区和工作树恢复到当前提交,丢失所有本地未提交的更改。
git reset --soft不会更改您的临时区域或工作树。事实上,这个命令根本不会进行任何更改。git --reset soft通常与commit-id一起使用,以将HEAD(当前提交)更改为不同的提交,同时保持工作树和暂存区的原样。

f87krz0w

f87krz0w2#

以您的情况,使用git reset并不是最好的选择。简单的方法是使用下面两种方法之一。
1.如果你想从暂存区(索引/缓存)删除的文件,它在之前的一些提交中被跟踪

git restore --staged <filenames> or git rm --cached <filenames>

1.其他情况

git restore --staged <filenames>

1.可选的,也许你仍然可以使用git reset,但一定要小心,因为它很容易发生意外

git reset <filename>
brgchamk

brgchamk3#

使用以下git命令:
git rm --cached

相关问题