如何判断repo的fork是否在上游找不到提交

时间:2016-02-04 05:57:20

标签: github

我在GitHub帐户中分配了大约20个不同的回购。其中大部分,我分叉了一个上游回购,创建了一个分支,上传了一个补丁,提交了一个拉取请求,并将PR合并到了上游。所以我的回购分支可以删除。

如何判断哪些叉子在上游是多余的并且可以删除?如果我的某个仓库的分支有20个分支,我不想检查每个分支的 是否有任何提交不在上游分支中。

1 个答案:

答案 0 :(得分:0)

  

我不想检查每个分支是否有任何提交不在上游分支中。

然而你应该(对于你的分支是唯一的分支):检查上游仓库是否包含每个分支HEAD的最简单方法。

只克隆上游回购,然后进行分叉:

git ls-remote --heads /url/of/a/fork

(使用git ls-remote,您不必克隆所有分支,只需克隆上游代码)

对于代表上游仓库分支的分支的每个SHA1,从克隆的上游仓库执行:

git branch --contains <SHA1>

如果可以从上游仓库访问每个HEAD,那么fork就是过时的。

我忽略了所有在上游仓库中找到的分支,因为所说的上游仓库可以对这些分支进行rebase /重写,并且你不应该直接在一个公共分支上开发(PR应该从上游不存在的专用PR分支