如何从暂存区域中删除目录子树?
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
excludesfile
与 excludefile
也许这会节省别人我失去的时间......
【讨论】:
以上是关于如何从暂存区域中删除目录子树?的主要内容,如果未能解决你的问题,请参考以下文章