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

43
昨天,我推到了GitHub上我的ConnectBot的分支。我推了一次,意识到我没有按照自己想要的方式进行更改,重新提交并再次推送。
现在,GitHub有两个提交: 我的主分支仅跟踪第二个提交,但第一个提交仍然可用,并且仍在我的活动记录中。如何删除它以确保没有人意外地拉取该提交而不是更正的版本?

24
8年过去了,这些提交仍然存在——显然,被接受的答案是错误的。 - inetphantom
好消息是,经过这么多年的发展,GitHub现在拥有了一个虚拟助手,可以自动为您创建工单。非常顺畅的流程。 - ospider
@ospider 我们可以从哪里自动创建工单? - alper
1
@alper GitHub 支持。 - ospider
2个回答

13
如果你真的需要立即删除它,你可能需要联系GitHub支持
拉取应该生成一个仅包含引用对象的包,因此没有人应该因为克隆或拉取而得到该提交。例如,
$ 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

38
四年过去了,OP的提交仍然在Github上可用。 - Raf
21
你说 GitHub 会定期垃圾回收那些没有被引用的提交(commit) 的依据是什么?我之前听过这个说法,但除了像这样的答案外,找不到更可信的资料。 - Ernest
7
你需要联系GitHub支持(如此处所示),以删除不再被引用的缓存提交。 - Jonathan Cross
7
我的情况是,我联系了 GitHub,他们回复说他们“在我们这边清除了缓存并运行了垃圾回收”,我能够确认提交记录不再可访问。 - haridsv
14
迄今已经11年了,OP的悬挂提交仍然在Github上可用(1cd775d)。 - andreiashu
显示剩余5条评论

13

删除仓库或联系GitHub

如果可以承受丢失所有问题,删除仓库并重新创建它而不包含错误提交似乎是可行的。该数据也会从提交 API 中消失(尽管推送事件仍可见)。参见:https://dev59.com/73NA5IYBdhLWcg3wrPyq#32840254

如果不能承受丢失问题数据,则 GitHub 支持人员可以手动删除悬挂提交。例如,当我将所有 GitHub 提交电子邮件上传到存储库时,他们要求我删除它,所以我这样做了,然后他们执行了gc。包含数据的拉取请求必须被删除:由于此原因,该存储库数据在初始下线后一年内仍然可以访问。

他们目前的帮助页面说

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

也许将存储库设为私有也会使问题保留并且摆脱提交,我不确定。但是您肯定会失去星标/分叉。不确定恢复后提交是否会消失。但至少你可能能够保留一个私人备份以备不时之需。


2
请注意,如果您将存储库设为私有,您还将永久失去所有的星标和分叉! - ruohola

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接