在github

时间:2016-09-12 23:24:04

标签: git github git-branch

我想找出某个提交属于 GitHub 的分支,但与大多数提交不同,这个提交不会在GitHub上显示其分支

A) enter image description here b) enter image description here 我克隆了存储库,然后在本地运行 git branch --contains <COMMITID>,但我得到了error: no such commit

但是,在github上我可以通过传递URL中的<COMMITID> 来导航到提交,我认为这与我之前得到的错误相矛盾...

我怀疑分支被删除了(我不确定远程分支删除,但我认为只删除了ref并且保持了未提交的提交?)...并且提交无法访问(忽略)当我在git clone本地?)

如果是这样,我如何找到有关这些“僵尸提交”的更多信息?如果我错了,究竟发生了什么?也许是git revert

1 个答案:

答案 0 :(得分:3)

拉取请求不是分支,它是一个标记,上面写着“我想将此功能分支合并到另一个分支中”。

这里发生的事情是:

  1. 有人创建了一个分支。
  2. 创建了拉取请求以合并此分支。
  3. 在不使用--no-ff的情况下合并分支,然后删除。
  4. 然后你克隆了。
  5. 由于现在删除的分支的提交无法访问,因此git在克隆时不一定会发送它们。由于它们尚未在遥控器上进行垃圾收集,因此当您使用GitHub上的URL(相当于git show <somehash>的操作)进行导航时,您仍然可以看到它们。

    使用合并提交(例如via --no-ff)可以防止合并时“原始”提交无法访问。 Rebase-then-merge导致哈希值发生变化,但没有合并提交 - 有些人不喜欢你从合并提交中得到的混乱。

    您可能会发现已合并的分支的历史记录包含具有不同哈希的相同提交。 我不相信有一种方法可以获得包含此提交的“克隆与垃圾”。 git commit --mirror是最接近的,但这只是获取所有引用....