【问题标题】:How to remove history of deleted git subtree folder?如何删除已删除的 git 子树文件夹的历史记录?
【发布时间】:2013-03-31 04:20:48
【问题描述】:

我使用 git-subtree 添加了一个 git 存储库。问题是我在使用 git-subtree 添加存储库之前进行了硬重置。现在提交历史仍然在存储库中,但它与 master 断开连接。

知道如何删除它吗?我试过 git rm --cached 没有运气。

【问题讨论】:

  • 如果你已经重置到子树之前,一个简单的git gc 应该会清除这些提交。
  • 我试过git gc,但是当我做git log --all时提交仍然存在

标签: git git-commit git-subtree


【解决方案1】:

要立即删除已经无法访问的提交,这将是您的子树提交的情况,您可以使用以下命令:

git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune

git gc 不会立即收集无法访问的提交,因为这些(在默认配置中)需要首先过期,然后才不会与其他可访问的提交打包。这会在一段时间后自行发生,或者您可以使用上面的命令强制它。

还要考虑到对子树提交的任何引用都会阻止它们被收集,这包括分支、标签和 reflog 引用。确保您确实没有对这些提交的悬空引用。

这里还有一个关于如何处理无法访问的提交的更详细的问题:

Garbage collect commits in git

【讨论】:

  • 这不起作用。当我执行git log --all 时,我仍然可以看到提交。当我做git log 时,提交不存在。还有其他想法吗?
  • 我让它工作了!你是对的,即使我删除了远程,获取的远程标签仍然在 git 存储库中。我删除了所有的标签,现在它是干净的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 2015-12-10
  • 2017-10-01
  • 2017-06-16
  • 2010-09-28
  • 2018-11-22
  • 2014-11-24
相关资源
最近更新 更多