Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 永久删除提交_Git_Github_Git Rebase - Fatal编程技术网

Git 永久删除提交

Git 永久删除提交,git,github,git-rebase,Git,Github,Git Rebase,我知道这个问题有成千上万条线索 但我发现了一些很奇怪的事情 如果在GitHub上创建项目,请执行一些提交。 假设提交1、2、3、4、5。 后来,您意识到您想要将某些内容更改为commit 3 因为你在自己的分支机构工作,重写历史没有问题 让我们这样做:(基于stackoverflow答案) 太好了!错误被纠正了。 历史记录已被重写,因此提交bbc643cd现在是lkqjfhchc 您可以在GitHub上检查源代码,所有内容都已更新 但是有人仍然可以在GitHub上找到它 访问URL:。。。(完整

我知道这个问题有成千上万条线索

但我发现了一些很奇怪的事情

如果在GitHub上创建项目,请执行一些提交。
假设提交1、2、3、4、5。
后来,您意识到您想要将某些内容更改为commit 3

因为你在自己的分支机构工作,重写历史没有问题

让我们这样做:(基于stackoverflow答案)

太好了!错误被纠正了。 历史记录已被重写,因此提交
bbc643cd
现在是
lkqjfhchc

您可以在GitHub上检查源代码,所有内容都已更新

但是有人仍然可以在GitHub上找到它

访问URL:。。。(完整提交哈希)您将找到它

我们如何才能永久删除此承诺


谢谢你的帮助

根据您的补充意见:

你做了一切应该做的事。
要点是:git永远不会丢失数据,除非你告诉它(被称为
gc
-garbadge收集器)

文件将保留在那里,直到调用它们为止

这称为悬挂文件

悬而未决的承诺 一种提交,它既不直接链接到任何分支或标记,也不通过其任何提升项链接到任何分支或标记

您可以通过以下命令在本地查看所有悬空引用:

git fsck --full

摆脱它的唯一方法是运行gc

//
// !!!Caution:
// It will remove all your dangling files
git gc --aggressive --prune now

您可以阅读更多信息。

我从这里联系了Github的工作人员:

以下是答案(我对此无能为力,没有修剪,没有gc,等等)

嘿,马克西姆

提交可用,因为提交不会自动删除 当它们从分支的历史记录中删除时,它们将被删除 当它们被垃圾收集时。我只是为此做了垃圾收集 手动提交存储库,提交现在应该返回404

希望这有帮助

干杯,XXXXX


所以你只需等待或联系工作人员强制垃圾收集器,以防你有同样的问题

您确定原始提交也不是任何其他分支的一部分吗?不。我只是向master提交了一次以启动回购。然后我创建了一个“dev”分支。这只是在dev中。如果这有帮助的话,我注意到这不是因为我转到了提交的url,而是因为我在提交中引用了一个问题(关键字“closes”后跟问题id)。现在在这个问题上,我有一些文字说明提交有一个引用,还有另一个类似的消息,带有新的提交散列。如果我点击旧的散列,我可以看到整个提交。只要它没有被任何分支或标记的历史引用,它可能会在一段时间内消失,下次github可能会对您的repo执行
git gc
,并/或清除他们的一些缓存。哦,好吧,在一个问题评论中提到SHA可以很好地算作参考。是的,为了清理remote也可以:git push origin--force--all或类似的东西?github会偶尔自动清理它。根据他们的文档,应该不会超过90天。所以OP必须等待一段时间,才能在github上看到他的commit Dispear,如果他不这样做的话well@codeWizard谢谢你的回答!当我运行
git fsck--full
时,它会检查对象-->100%:91/91 done。但我没有任何悬念…为了删除“原始”引用,您必须在远程github存储库(您没有访问权限)上运行它,所以只需等待并偶尔检查一下。
//
// !!!Caution:
// It will remove all your dangling files
git gc --aggressive --prune now