即使在 MR 合并后删除分支后,GitLab 是否仍保留提交

ura*_*nix 6 squash gitlab merge-request

在我们使用 GitLab 的开发中,当功能分支合并到主分支中时,我们通常会压缩它们的提交(如果重要的话,我们使用变基策略而不是合并)。

但是,如果来自功能分支的提交被压缩为单个提交(稍后合并到主分支中)并且分支本身被删除,GitLab 如何仍然显示原始提交?它们是永远保留在存储库中还是最终被删除只是时间问题?

我相信 GitLab 在存储库上做了一些垃圾收集,但我想知道为什么它不影响 MR 的提交。

Von*_*onC 1

挤压和合并提交页面确实提到:

\n
\n

每次分支合并到基础分支时,最多会添加两次提交:

\n
    \n
  • 通过压缩分支中的提交而创建的单个提交。
  • \n
  • 合并提交,除非您在项目中启用了快进合并。
    \n快进合并禁用合并提交
  • \n
\n
\n

合并提交很可能在压缩之前保留对分支的引用,这可以解释为什么原始提交仍然可见。

\n

如果情况并非如此,意味着没有任何内容实际引用这些提交,那么内务管理(此处针对自我管理的 GitLab 进行了描述,但在云产品上也很活跃)最终会将它们从存储库中删除。
\n但是:

\n
\n
    \n
  • Gitaly 永远无法从对象池中删除无法访问的对象,因为它们可能被任何连接到它的分叉使用。
  • \n
  • 由于同样的原因,Gitaly 必须保持所有对象均可访问。因此,对象池维护对无法访问的 \xe2\x80\x9cdangling\xe2\x80\x9d 对象的引用,以便它们\xe2\x80\x99不会被删除。
  • \n
\n
\n