【问题标题】: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 人员进行早期清理。但是,你可以通过这种方式处理的大多数事情——比如摆脱暴露密码的提交——都很好地进入了“太到你可以真正完成它的时间,所以很少有任何理由为此烦恼。)

【讨论】:

    【解决方案2】:

    您可能想查看this answer

    TL;DR:

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

    【讨论】:

      【解决方案3】:

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

      选择提交哈希
      删除提交哈希

      例如:
      git rebase -i --root master
      选择 2d224bc6cec9b33ae9b910dbef5efdd707625383
      删除 2d224bc6cec9b33ae9b910dbef5efdd707625383

      【讨论】:

        【解决方案4】:

        接受的答案很棒。

        我想补充的是,GitLab 允许您调整清理作业(git gcgit repack)在远程存储库上执行的频率,请参阅 documentation了解详情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-05
          • 2017-01-19
          • 2013-03-26
          • 2020-09-08
          • 1970-01-01
          • 2022-07-03
          • 1970-01-01
          • 2011-01-01
          相关资源
          最近更新 更多