【问题标题】: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,阶段,提交。

标签: git gitignore git-add


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 2010-12-03
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多