2015-09-14 36 views
3

如果這太基礎或者重複,但是我在這裏感到困惑,請道歉。我在GitHub的幫助中找不到答案(我確實看過),而且我確實問過一些軟件開發人員(我正在使用GitHub來存儲文檔),他們也不知道!Pull請求在GitHub桌面中究竟做了什麼

這裏是場景:我有一個GitHub倉庫(稱之爲'A')。如果有人想進行更新,他們會將該存儲庫分配給他們自己的一個(稱爲'B')。然後,他們可以點擊「在桌面上克隆」來獲取本地副本。

他們在本地進行編輯,然後打開GitHub桌面。

在GitHub桌面中,他們可以使用'Commit to Master',然後點擊'Sync'按鈕。這將它們與存儲庫B同步。如果他們想要將編輯複製到存儲庫A,它們將進入GitHub併發出拉取請求。我明白了。

但是GitHub桌面也有一個'Pull Request'按鈕,我不知道它是在向誰發出請求!它是存儲庫A還是存儲庫B?或者完全不同的東西?

如果是存儲庫B,那麼commit/sync和pull request按鈕有什麼區別?

我不能嘗試,因爲該按鈕總是灰色的,我

而且可以將用戶直接進行拉請求轉換成一個倉庫從GitHub桌面(也許是因爲我自己的倉庫?) - 或它將始終是通過存儲庫B的兩步過程嗎?

回答

4

如果您開始考慮分支機構而不是存儲庫,那麼合併請求行爲將更爲清晰。存儲庫可能包含許多分支,當您創建拉取請求時,您會選擇要將哪個分支合併到其他分支中。

在你的情況,這聽起來像有兩個有趣的分支迄今:

  • A/master
  • B/master

也就是說,庫AB各有一個master分支。當您看到從存儲庫B到存儲庫A打開的拉取請求時,實際上是從分支B/master打開到分支A/master

瞭解到,事實上,您可以在任何具有共同提交歷史記錄的分支之間打開請求。例如,如果有人創建了一個A/document_more_things分支,取得了一定的提交(和同步,這在Git的說法是從他們本地A一個push到GitHub的遠程A),倉庫可能是這樣的:

a - b - c   # master 
     \ 
      d - e - f # document_more_things 

無論是masterdocument_more_things分公司倉庫A存在,而不需要分出的代碼庫B的,筆者可以打開一個pull請求從A/document_more_thingsA/master。當拉請求被接受,歷史會這個樣子,用g合併提交

a - b - c --------- g # master 
     \  /
      d - e - f 

無論document_more_thingsAB其實無所謂非常多,因爲混帳只在乎和承諾他們的祖先。如果B在提交Cd e f時被分爲B/master,我們將在從B/masterA/master的提取請求之後獲得相同的圖片,如我們從A/document_more_things所做的那樣。

如果你想更好地瞭解Git的模型,還有很多網上資源推薦:

+1

是一個堅實的名單,這幫助了很多 - 和學習的Git分支鏈接是一個非常好的資源。謝謝。 –

+0

不是我一直在尋找的答案,而是一篇關於PR的精彩文章。謝謝。 – ProblemsOfSumit