2015-07-10 57 views
2

前段时间我从外部存储库中引入我的项目。我并不确定我做了什么 - 我想通过将它合并到我的项目中尝试这个框架,所以我做了,我不记得了究竟是什么了。如何删除我的git历史中的一个奇怪的遗留部分?

因此,经过一段时间,我决定这不是一个好主意,并且没有合并。这给我留下了一个奇怪的树形结构。我怎么才能删除较低的悬空提交线程? (他们实际上是在外部存储库的大多是公共标签)

回答

2

的“怪异的树结构”的一个分支。你可以用git branch -D branchname删除这些。但是,这实质上将不提交提交,但不会完全删除它们(即它们不会显示为树,但仍将位于磁盘上)。如果你想垃圾收集他们,git reflog expiregit gc是你的朋友。

+0

这不是一个分支,至少我相信是这样,它并没有列在我的分支中。它是来自另一个存储库的外部代码。所以它没有一个分支名称来执行'branch -D',并且'git gc'什么也没做,根据其他评论。 – user1846231

+1

如何在命令行看到'奇怪的树结构'?如果'git reflog expire'和'git gc'没有帮助,它们必须以某种方式被引用。也许是通过标签? – abligh

+1

啊!我敢打赌那些在* remote *分支。试试'git branch -a',看看你是否有需要删除的远程分支。 – abligh

1

看一看这里:Listing and deleting Git commits that are under no branch (dangling?)

具体来说,这样的回答:

git reflog expire --expire-unreachable=now --all 
git gc --prune=now 

请阅读完整的答案,所以你知道你在做你的资料库的内容。

+1

我试过你说过的话。根据我的理解,第一条命令会清除悬挂线程可能存在的任何日志链接,第二条命令会清除悬挂的所有内容。但是这两个命令没有任何作用,并且我的存储库中仍然显示了该外部代码。 – user1846231

相关问题