GitHub是否会垃圾回收在拉取请求中引用的悬空提交?

32
以下情况时常会发生...
我使用git checkout -b experiment,提交一些实验性的更改,并打开了一个请求拉取。经过一些讨论后,该请求被拒绝。
如果现在我删除远程分支,是否会导致差异在某个时间点不可达,或者GitHub是否确保即使这些提交没有出现在任何分支上,也不会进行垃圾回收?
我想删除已死的分支,但只有在这样做不会减少被拒绝的拉取请求的历史价值时才这样做。
1个回答

38
不,它们不会成为gc,因为即使你删除分支,它们也不是完全未引用的。
Github为每个拉取请求创建一个分支(实际上是两个)。它们在非默认命名空间中,因此当您从存储库中提取(或获取)时通常不会得到它们。
要查看实际情况,请执行git ls-remote <REMOTE>,其中<REMOTE>是远程名称(如果是您的存储库已知的名称)或URL(无需进行git remote add即可工作)。这个远程应该有一些拉取请求,否则你将无法明白我的意思。
这将列出远程上的所有引用(所有分支和标记),您将看到一些引用,如refs/pull/<number>/headrefs/pull/<number>/merge。它们分别指向PR中最新的提交和合并它的提交。

很好的信息!这个在Github的网站或博客上有文档记录吗?还是你是怎么知道的?谢谢。 - Jorge Orpinel Pérez
1
@JorgeOrpinel 这在 https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository 中有详细说明:“您无法对存储库的现有克隆或分支进行任何操作,但是您可以通过联系 GitHub 支持或 GitHub 高级支持永久删除 GitHub 上拉取请求中对敏感数据的缓存视图和引用。”(需要向支持部门申请才能执行此操作,这意味着它不会像默认本地 git 安装中那样自动进行垃圾回收) - Patrick Mevzek
它在https://docs.github.com/en/github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally#modifying-an-inactive-pull-request-locally有记录。 - philb

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