如何从临时区域中删除目录子树?


69

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

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


如果尚未完成第一次提交,请删除.git文件夹。创建具有正确内容的.gitignore文件。重来。git init,阶段,提交。
Gishu 2013年

Answers:


140

在#git中,您说过无意中添加了一个应该被忽略的目录,因此运行

git rm --cached -r directory-name

递归地directory-name从索引中删除根植于树。

别忘了更新.gitignore


1
-r .更简单并且做同样的事情吗?
乔纳森·阿拉德2012年

3
你能提到为什么需要--cached吗?我不知道为什么
亚历山大·米尔斯

4
@AlexMills该问题指定了已git add用于登台区域的目录,也称为缓存或索引。按照git rm文件--cached:“仅从指数使用此选项unstage和删除路径。正在工作的树文件,无论是否经过修改,都将保留下来。”
格雷格·培根

27

您可以只使用以下命令:

git reset

2
fatal: Failed to resolve 'HEAD' as a valid ref.我认为没有什么可重置的吗?
橡子

@橡子,对。我还没有意识到您还没有完全致力于新的仓库。
马修·弗莱申

5
在那种情况下,我只是rm -rf .git && git init .重新开始。
Jim Mitchener

这将重置所有内容,而不是仅重置特定文件夹。
黑色

4

一定要记住把s--global core.excludesfile .gitignore.txt

excludesfileexcludefile

也许这可以节省我失去的时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.