松开&x201C;git添加<;dir>”;?

松开&x201C;git添加<;dir>”;?,git,git-reset,Git,Git Reset,我使用命令“git add dir”错误地添加了文件。我还没有运行“git提交”。有没有办法从提交中删除此目录及其包含的所有内容 我已经尝试了git reset dir,但没有成功。显然,git reset file是撤销它的方法。但我的文件太多,时间太少。使用和: 您需要使用git-rm--cached-r。此命令将从索引中删除暂存目录内容 如果该目录已被跟踪,则必须手动查找新文件和旧文件,并将其解压缩 可能在此之后运行git reset,以重置目录中的现有(和已跟踪的)文件 2019年更新

我使用命令“git add dir”错误地添加了文件。我还没有运行“git提交”。有没有办法从提交中删除此目录及其包含的所有内容

我已经尝试了git reset dir,但没有成功。显然,
git reset file
是撤销它的方法。但我的文件太多,时间太少。

使用和:

您需要使用
git-rm--cached-r
。此命令将从索引中删除暂存目录内容

如果该目录已被跟踪,则必须手动查找新文件和旧文件,并将其解压缩

可能在此之后运行
git reset
,以重置目录中的现有(和已跟踪的)文件


2019年更新:


只需运行
git reset directory
,它将取消所有新添加的文件的存储。

要从索引中删除目录及其内部的所有内容

git rm --cached -r dir
git-rm--cached-rdir

--cached
开关使
git rm
仅对索引进行操作,而不接触工作副本。
-r
开关使其递归。

取消存储目录

$ git reset <dir>


确认以前暂存的文件夹或文件均未暂存。

删除暂存文件/文件夹(尚未提交)的一个简单命令是-
git restore--staged


git reset
更新该路径的索引,使其与
(当前提交)匹配。它不涉及工作树。“从索引中删除整个暂存目录”将是对git命令更好的解释,因为对于像我这样的git初学者来说,该命令看起来非常像它甚至可以删除文件系统上的目录。只是口味的问题。这就是为什么我将
--cached
开关加粗的原因。尽管如此,我还是编辑了答案,以证明它仅适用于索引。@Saschagotfried感谢您的澄清,一开始我甚至对编辑感到害怕,但您的评论表明:)在此之后,我几乎删除了我的整个文件夹。。。正在执行git重置头文件夹修复了所有问题。。。但是在做这件事之前,先做一个
git status文件夹
,并确保它说它“删除”了该文件夹上的所有文件,这还不够
git reset
?@Bananach我刚刚试过,是的,
git reset
也能工作。答案是从2011年开始的,所以我不确定这是否在8年前就起作用了。我会更新答案。谢谢你的提示!还原不是git命令。。。
$ git reset <dir>
$ git add <dir>
$ git status
$ git diff --staged --name-only