如何从GitHub中删除悬空提交?

时间:2010-12-06 15:32:31

标签: git github git-dangling

昨天,我推到my fork of ConnectBot on GitHub。我推了一次,意识到我没有按照我想要的方式进行更改,重新提交并再次推送。

现在,GitHub都提交了两个提交:

我的主分支仅跟踪第二次提交,但第一次提交仍然可用且仍在我的活动供稿中。如何删除它以确保没有人意外地提取该提交而不是更正的版本?

2 个答案:

答案 0 :(得分:15)

GitHub将定期垃圾收集从顶级引用(例如标记或分支或reflog)无法访问的任何提交(和其他对象)。这意味着随着时间的推移(比如下个月),这个对象就会消失。

Pulling应该生成一个只包含被引用对象的包,这样就不会因为克隆或拉取而得到那个提交。例如,

$ git clone git://github.com/nylen/connectbot.git
Cloning into connectbot...
remote: Counting objects: 6261, done.
remote: Compressing objects: 100% (1900/1900), done.
remote: Total 6261 (delta 3739), reused 5980 (delta 3520)
Receiving objects: 100% (6261/6261), 3.04 MiB | 3.40 MiB/s, done.
Resolving deltas: 100% (3739/3739), done.
$ git cat-file -t 1cd775d
fatal: Not a valid object name 1cd775d

如果您确实需要立即将其删除,则可能需要联系GitHub Support

答案 1 :(得分:4)

删除回购或联系GitHub

如果你能负担得起丢失所有问题,那么删除存储库并在没有错误提交的情况下重新创建它似乎是有效的。数据也会从提交API中消失(尽管推送事件仍然可见)。另见:https://stackoverflow.com/a/32840254/895245

如果您无法承受丢失问题数据,GitHub支持可以手动删除悬空提交。例如,当我uploaded all GitHub commit emails to a repo他们让我把它取下来时,我做了,他们做了gc。拉取包含数据have to be deleted however的请求:由于此原因,最初删除后一年内仍然可以访问该回购数据。

他们当前的help page says

  

您可以通过联系GitHub支持永久删除所有存储库的缓存视图并在GitHub上提取请求。