【问题标题】:How to remove unused git commits remote?如何删除未使用的 git 远程提交?
【发布时间】:2020-07-30 13:38:41
【问题描述】:
最近我使用git rebase -i --root master 清理了我的 git 存储库。我将一些提交压缩在一起,编辑了一些,相应地设置了时间,最后我使用git push --force-with-lease origin master 将我的本地状态推送到远程。
这工作得很好,我的 repo 现在已经清理了,就像看到 here 一样,但不知何故,我能够找到一个旧的提交哈希,当通过 url 显式搜索它时,我仍然能够查看旧树如here所见,不再使用。
所以我的问题是,是否以及如何从我的远程存储库中删除这些旧的提交/树?
有什么想法吗?
【问题讨论】:
标签:
git
github
commit
rebase
【解决方案1】:
“删除”一个提交实际上并没有删除它:它会停留一段时间。除非您已将哈希 ID 保存在某处,否则您将无法找到它。
您保存了哈希 ID 3597386eaa550367e5531e4ec019f04e1d7e40df。更准确地说,您保存的 GitHub URL 包含哈希 ID,然后您将其提供给 GitHub,以便他们可以在他们身边使用哈希 ID — 并且仍然可以找到仍然存在的提交。
它会一直存在,直到不再存在。确切的时间很难说:Git 有一个维护命令可以清理未使用的提交。在您自己的存储库副本中,您可以按照自己的计划运行此维护命令。在 GitHub 上的副本中,您将受到他们的维护计划的支配。
(如果它真的很重要,你可以要求 GitHub 人员进行早期清理。但是,你可以通过这种方式处理的大多数事情——比如摆脱暴露密码的提交——都很好地进入了“太到你可以真正完成它的时间,所以很少有任何理由为此烦恼。)
【解决方案3】:
如果您想手动删除它们,可以使用 pick 和 drop 命令。
选择提交哈希
删除提交哈希
例如:
git rebase -i --root master
选择 2d224bc6cec9b33ae9b910dbef5efdd707625383
删除 2d224bc6cec9b33ae9b910dbef5efdd707625383