2012-09-09 66 views
43

我以前分叉了jockm/vert.x並向他發送了一個請求。現在我想fork vert-x/vert.x(jockm/vert.x的上游)並向它們發送不同的拉取請求。但是,當我點擊Fork按鈕時,不出意外的是,我最終在jockm/vert.x的tjcrowder/vert.x分支中取而代之。是否可以同時分支vert-x/vert.x和jockm/vert.x以便我可以根據需要發送每個pull請求?當我已經分叉了一個不同的分叉時,如何分叉原始回購

恐怕答案可能是相同this question about the converse situation(「有沒有辦法GitHub的,但你可以添加一個遠程回購」),但我希望否則  —並非最不重要的,因爲我不知道怎麼回答這將允許我向新的遠程發送請求。

回答

23

沒有GitHub方式(小謊言,見下文),但也沒有什麼可怕的。

顧名思義,你的叉子的叉子的原始叉子。 當您打開拉取請求時,您可以選擇選擇拉取請求的來源和目的地。這裏可用的選擇顯然取決於叉形圖,但只要在兩個存儲庫之間的圖中存在路徑,就應該是安全的。 另外,由於pull請求位於網站端,因此只要您不想從git使用它,您甚至不需要添加遠程端口。

當然,您可能想重新考慮自己在該圖表中的位置,並讓自己成爲真正的上游的直接孩子,但這大多是無關的。

如前所述,實際上有一種扭曲的方式來擁有多個分叉,即創建組織和分叉。這樣,您可以在同一個圖中「擁有」多個存儲庫。但真的沒有必要去那裏。

+2

果然,如果我做了另一個拉取請求,我可以選擇將它發送到jockm/vert.x或vert-x/vert.x(或上游的許多其他分支中的任何一種)。謝謝!我必須小心避免嘗試將更改發送到實際特定於jockm/vert.x的vert-x/vert.x,但這是分支的目的。 –

+0

FWIW,我已經[詳細如下](http://stackoverflow.com/a/12348696/157247)我如何應用這個答案的知識。再次感謝。 –

+2

問題是,當你PR恢復到原始回購時,它將會把你不小心提交給同一分支的所有廢話都拿出來。重新命名你的回購,然後分出原件比清理混亂要容易得多。 – Mars

1

我沒有看到任何關於「多叉」的細節,所以我最終可能會創建另一個GitHub帳戶,在此帳戶下我將執行第二個克隆,並將不同的拉請求發送到vert.x/vert.x

由於您可以擁有「Multiple github accounts on the same computer」(正確的ssh config file,也described here),這是一種可能的解決方法。

+1

謝謝。如果我無法「正確地」完成,我會牢記這一解決方法。 (在這個特殊的情況下,我不認爲jockm/vert.x庫會非常活躍,所以我可能只是確定他已經提交了[這是所有的三行],然後取消fork但是,如果它出現在其他地方,這是有用的信息。) –

+1

@TJCrowder我在考慮拆分,但我不確定您的拆分請求的副作用。在拉入請求被考慮之前,我不會解除分叉(就像你所說的那樣),因此我建議建立第二個帳戶。 – VonC

4

看來更好的選擇是在fork上創建一個分支,並從該分支創建一個pull請求。您可以使用分支來「分叉」您的版本

12

感謝sigma's answer,我發現當我去對jockm/vert.x回購庫進行拉取請求時,不僅上游回購可用,而且其他所有分支上游回購也是如此。所以我落得這樣做是:

  1. 刪除我的jockm/vert.x,而是分叉VERT-X/vert.x,因爲主要是我想主要的上游回購內工作,不jockm的版本的叉。
  2. 爲我想發送給jockm的提交創建一個分支,併爲我想發送到vert-x的提交創建一個單獨的分支。
  3. 對每個分支進行相關更改。
  4. 將每個分支的pull請求發送到相關回購站,因爲jockm/vert.x repo被列爲請求的可能目標(以及大約200個其他分支)。

我用單獨的分支(基本特性分支),使這些提交會留在那些唯一拉的請求,因爲在同一分支上後,犯被自動添加到拉入請求,而這些變化需要保持直到/除非合併。

1

您也可以在您的個人資料/設置下創建一個新的組織。然後,您可以通過同一個帳戶分配相同原始回購的不同狀態。

+1

[這已經涵蓋](https://stackoverflow.com/a/12339396/157247),無需發佈它的副本。 –