如何删除未使用的 git 远程提交?

How to remove unused git commits remote?

最近我使用 git rebase -i --root master 清理了我的 git 存储库。我将一些提交压缩在一起,编辑了一些,相应地设置了时间,最后我使用 git push --force-with-lease origin master 将我的本地状态推送到远程。

这工作得很好,我的仓库现在已经清理干净 here, but somehow I was able to find an old commit hash and when searching for it explicitly via the url, I am still able to view the old tree that is not used anymore as seen here

所以我的问题是是否以及如何从我的远程存储库中删除这些旧的 commits/trees?

有什么想法吗?

您可能想查看

长话短说:

如果它们不属于分支或标签,它们将在一段时间后被删除。

如果您想手动删除它们,可以使用 pickdrop 命令。

选择commithash
删除 commithash

例如:
git rebase -i --root master
选择 2d224bc6cec9b33ae9b910dbef5efdd707625383
下降 2d224bc6cec9b33ae9b910dbef5efdd707625383

"Removing" 提交实际上并没有 删除 它:它会保留一段时间。你再也无法找到它了,除非你把哈希 ID 保存在某处。

您保存了哈希 ID,3597386eaa550367e5531e4ec019f04e1d7e40df。更准确地说,您保存的 GitHub URL 包括哈希 ID,然后您将其提交给 GitHub,以便他们可以在他们这边使用哈希 ID——并且它仍然位于提交,它仍然存在。

它会一直存在直到消失为止。确切的时间很难说:Git 有一个清理未使用的提交的维护命令。在您自己的存储库副本中,您可以 运行 根据自己的计划执行此维护命令。在 GitHub 上的副本中,您受制于 他们的 维护计划。

(如果它真的很重要,您可以要求 GitHub 人员进行早期清理。但是,您可以通过这种方式处理大多数事情——例如删除暴露密码的提交—当你真正完成它时,已经进入了 "too late" 时期,所以几乎没有任何理由为此烦恼。)

采纳的答案很好。

我想补充的是,GitLab 允许您调整清理作业的频率(git gc and git repack) are executed on the remote repository, see the documentation 了解详情。