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