36

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

现在,GitHub 有两个提交:

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

4

2 回答 2

13

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

拉取应该生成一个只包含被引用的对象的包,因此没有人应该因为克隆或拉取而获得该提交。例如,

$ 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 支持

于 2010-12-06T16:34:10.723 回答
13

删除 repo 或联系 GitHub

如果你能承受丢失所有问题的代价,那么删除 repo 并在没有错误提交的情况下重新创建它似乎是可行的。数据也会从提交 API 中消失(尽管推送事件仍然可见)。另请参阅:https ://stackoverflow.com/a/32840254/895245

如果您无法承受丢失问题数据的代价,GitHub 支持可以手动删除悬空提交。例如,当我将所有 GitHub 提交电子邮件上传到一个仓库时,他们要求我将其删除,所以我做了,他们做了一个gc. 但是,必须删除包含数据的拉取请求:因此,在初始删除后的一年内,该 repo 数据仍然可以访问。

他们当前的帮助页面说

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

也许将回购私有化也将保留问题并摆脱提交,我不确定。不过,您肯定会失去开始/分叉。不确定恢复后提交是否会消失。但至少您可以保留问题的私人备份。

于 2015-09-29T09:24:09.220 回答