2013-04-08 151 views
4

我使用git-subtree添加了一个git仓库。问题是我在硬件重新加入git-subtree之前做了一次硬重置。现在提交历史记录仍在存储库中,但与主服务器断开连接。如何删除已删除的git子树文件夹的历史记录?

任何想法如何删除它?我试过git rm - 没有运气的缓存。

+0

如果您已经恢复到之前的子树,一个简单的'混帐gc'应该消灭这些提交。 – TheBuzzSaw 2013-04-08 22:24:59

+0

我试过'混帐gc'但提交仍然存在,当我做'git的日志--all' – programmerdave 2013-04-09 19:56:22

回答

4

马上删除提交那些已经无法访问,这将是你的子树的提交,你可以使用下面的命令的情况下:

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

git gc不会立即收集可达提交,因为这些(在缺省配置)需要先过期,然后才能与其他可到达的提交打包。这会在一段时间后自行发生,也可以使用上面的命令强制执行。

而且考虑到你的子树的任何引用承诺将防止它们被收集,这包括设有分公司,标签和引用日志引用。确保你确实没有悬挂对这些提交的引用。

这里也是如何处置可达提交更详细的问题:

Garbage collect commits in git

+1

这没有奏效。当我执行'git log --all'时,我仍然可以看到提交。当我做'git log'时,提交不在那里。任何其他想法? – programmerdave 2013-04-09 19:55:40

+0

我得到它的工作!你是对的,所取得的远程标签仍然在Git仓库即使我删除了遥控器。我删除了所有的标签,现在是干净的 – programmerdave 2013-04-09 21:57:07

相关问题