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

Aco*_*orn 61 git gitignore git-add

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

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

Gre*_*con 122

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

git rm --cached -r directory-name
Run Code Online (Sandbox Code Playgroud)

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

别忘了更新.gitignore!

  • @AlexMills该问题指定了一个使用`git add`添加到暂存区域的目录,也称为缓存或索引.根据``git rm`文档](https://git-scm.com/docs/git-rm)对`--cached`:"使用此选项取消暂存和删除索引中的路径.工作树文件,无论是否经过修改,都将一言不发." (3认同)
  • 你能提一下为什么--cached是必要的吗?我不明白为什么会这样 (2认同)

Mat*_*hen 26

你可以使用命令:

git reset
Run Code Online (Sandbox Code Playgroud)

  • 在那种情况下,我只是`rm -rf .git && git init .`并重新开始. (5认同)
  • `致命:未能将'HEAD'解析为有效参考.我认为没有什么可以重置*到*? (2认同)