如何删除没有指定分支的git提交?
问题描述:
我有以下混帐回购协议结构:如何删除没有指定分支的git提交?
a-b-c-d-.. [master]
\
x
的承诺的X被accidentially完成(无法弄清楚如何),并没有命名的分支。我怎样才能删除这个提交?
对于细节,GIT中日志示出了该(翻译从德国回来,遗憾的任何inconvieniances):
Author: ...
Parents: 8444..
Branch:
Follows up:
Preceding:
...
的提交经由git prune
是不可拆卸的。
答
如果x不在任何分支的历史记录中,并且没有签出,它将自动被git快速删除。如果您想立即将其删除,您可以查看git help gc
。设置gc.reflogExpireUnreachable
为零,然后做git gc --prune=now
可能会做到这一点。
git rebase
,git commit --amend
,和其他这样的命令一直留下这种剩菜; git通常在与他们打交道时足够体面,你不必担心。
答
git prune
会做你想做的,但它会删除所有不可达的对象,而不只是一个特定的。
这也非常有用。但是我没有足够的声望来投票你的答案,对不起。 – fuz 2010-08-11 17:02:06
这是正确的答案。不知道阿什什在谈论什么。 – 2010-08-11 21:05:56
根据我的理解(从一个不再存在的评论中),“X”实际上** did **属于一个分支。否则,是的,垃圾收集会照顾它。 Linus强调了它的重要性。 – 2010-08-12 00:09:06