如何从暂存区域中删除目录子树?

Posted

技术标签:

【中文标题】如何从暂存区域中删除目录子树?【英文标题】:How do I remove a directory subtree from the staging area? 【发布时间】:2011-07-18 14:32:21 【问题描述】:

我创建了一个新的存储库,并运行了git add -A。然后我注意到有一个文件夹包含大约 100 个不应该包含的文件,所以我将它添加到 .gitignore

考虑到更新后的.gitignore,我现在如何清除暂存区域以便再次add 我的所有文件?

【问题讨论】:

如果你还没有完成你的第一次提交,把 .git 文件夹吹走。使用正确的内容创建 .gitignore 文件。重来。 git init,阶段,提交。 【参考方案1】:

在#git中,你说你无意中添加了一个应该被忽略的目录,所以运行

git rm --cached -r directory-name

从索引中递归删除以directory-name 为根的树。

别忘了更新.gitignore

【讨论】:

-r . 会更简单并做同样的事情吗? 你能提到为什么 --cached 是必要的吗?我不明白为什么会这样 @AlexMills 问题指定了一个使用git add 添加到暂存区的目录,也称为缓存或索引。根据--cached 上的git rm documentation:“使用此选项仅从索引中取消暂存和删除路径。工作树文件,无论是否修改,都将被保留。”【参考方案2】:

你可以直接使用命令:

git reset

【讨论】:

fatal: Failed to resolve 'HEAD' as a valid ref. 我认为没有什么可以重置了吗? @Acorn,对。我没有意识到你还没有对新的 repo 做出承诺。 在这种情况下,我只需 rm -rf .git && git init . 并重新开始。 这将重置所有内容,而不仅仅是特定文件夹。【参考方案3】:

请务必记住将s 放入--global core.excludesfile .gitignore.txt

excludesfileexcludefile

也许这会节省别人我失去的时间......

【讨论】:

以上是关于如何从暂存区域中删除目录子树?的主要内容,如果未能解决你的问题,请参考以下文章

从暂存区 git 中删除“h origin....”文件

如何在 git 中取消暂存已删除的文件? [关闭]

Git删除文件或者目录

文件从暂存区撤销

图解Git命令

如何将提交移动到 git 中的暂存区?