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

3
最近我使用git rebase -i --root master来清理我的git仓库。我把几个提交合并在一起,进行了一些编辑操作,按照时间顺序设置,并最终使用git push --force-with-lease origin master将本地状态推送到远程服务器上。
这个方法很好用,我的仓库现在已经整洁干净,可以在这里看到。但是,不知何故,我仍然能够找到一个旧的提交哈希值,通过url直接搜索,仍然可以查看未再使用的旧树,如这里所示。
因此,我的问题是是否有可能删除这些旧的提交/树形结构从我的远程仓库中? 有什么好的想法吗?

https://dev59.com/lpLea4cB1Zd3GeqP46Nj#34594815 - phd
4个回答

1

我建议您查看这个答案

简而言之:

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


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

例如:
git rebase -i --root master
选取 2d224bc6cec9b33ae9b910dbef5efdd707625383
丢弃 2d224bc6cec9b33ae9b910dbef5efdd707625383

1
“移除”提交并不真正意义上的删除它:它会在一段时间内保留。除非你已经将哈希ID保存在某个地方,否则你将无法再次找到它。
你已经保存了哈希ID:3597386eaa550367e5531e4ec019f04e1d7e40df。更准确地说,你保存了包含哈希ID的GitHub URL,然后将其提供给GitHub,以便他们可以在其端使用哈希ID,并且仍然可以定位提交,该提交仍然存在。
它将继续存在,直到它不存在为止。很难确定这是何时发生的:Git有一个维护命令,用于清理未使用的提交。在您自己的存储库副本中,您可以按照自己的时间表运行此维护命令。在GitHub上的副本中,您将受制于他们的维护计划。
(如果这真的很重要,您可以要求GitHub人员进行早期清理。但是,大多数可以通过这种方式处理的事情——例如摆脱公开密码的提交——在您实际完成之前已经过了“太晚”的时期,因此很少有理由去烦恼这一点。)

0

这个被接受的答案很棒。

我想要补充的是,GitLab 允许你调整远程仓库执行清理任务(git gcgit repack)的频率,详见 文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接