2016-09-12 80 views
2

我想找出什麼是一定的提交分支機構所屬的GitHub上但不像大多數提交的,這一個不GitHub上找到的一個分支在GitHub上

顯示其分支機構提交一) enter image description here b) enter image description here 我克隆的資源庫,然後跑去git branch --contains <COMMITID>地方,但我得到了error: no such commit

然而,在github上,我可以導航到該通過傳遞<COMMITID>在URL我認爲與我剛纔得到了錯誤矛盾提交...

我懷疑一個分支被刪除(我不知道有關遠程分支刪除,但我認爲只有ref是刪除和提交保持不變?)...並提交不可達(忽略當我git clone本地?)

如果是這樣我怎麼能找到更多關於這些「殭屍提交」的信息?如果我錯了,究竟發生了什麼?可能是git revert

回答

3

一個拉請求不是一個分支,它是一個標記,它說「我想合併這個特徵分支到另一個分支」。

什麼這裏發生的是:

  1. 有人創建了一個分支。
  2. 已創建拉取請求以合併此分支。
  3. 該分支合併時未使用--no-ff,然後刪除。
  4. 然後你克隆。

由於從現在刪除的分支的提交是無法訪問的,git並不一定會在您克隆時發送它們。由於它們尚未被垃圾收集到遠程,因此當您使用GitHub上的URL(相當於git show <somehash>的操作)進行導航時,仍然可以看到它們。

使用合併提交(例如通過--no-ff)可以防止「原始」提交在合併時變得無法訪問。 Rebase-then-merge會導致哈希值變化,但是沒有合併提交 - 有些人不喜歡你從合併提交中得到的混亂。

您可能會發現合併到的分支的歷史記錄包含使用不同散列的相同提交。 我不相信有一種方法可以獲得包含此提交的「克隆與垃圾」。 git commit --mirror是最接近的,但這只是獲取所有參考....

+1

也許你想解釋'--no-ff'? – Pachonk

+0

我更新的圖像顯示另一個「合併拉請求」,這兩個看起來相似(都有2個父母......我認爲這意味着既不使用** fastforward **),除了我想調查的一個沒有「分支」在** GitHub **上顯示,導致差異的原因是什麼? – watashiSHUN

+0

如果一個提交可以通過分支或標籤到達,git會在你克隆的時候發送給你。如果提交不可訪問,git可能不會這樣做。你在github上看到的分支只是遠程倉庫中的分支。 –