2013-02-11 54 views
48

我很好奇爲什麼GitHub調用提交合並,「拉請求」。爲什麼GitHub會調用外部提交,「Pull Request」?

根據我的理解,git pull將從遠程存儲庫中將所有更改提取到當前工作分支。然後將這些更改與FETCH_HEAD合併。 (Git Pull

因此,看看git push ...推動實際上會將提交的更改推送到存儲庫。這不是你在做一個Git回購的工作嗎?提交「請求」來合併你的代碼?那麼,爲什麼它不被稱爲「推送請求」?

回答

57

術語「拉請求」來自多少個開源項目組織自己的分佈式特性。您不要只是將更改推送到存儲庫(就像您使用集中式存儲庫(例如使用Subversion)一樣),您將分別發佈更改,並要求維護人員將您的更改拉入。然後維護人員可以查看更改並執行所述更改。

+5

因此,你基本上「請求」與編寫回購你想貢獻的人,以「拉」你回購? – 2013-11-11 16:04:31

+1

@bluesm就是這樣:) – poke 2013-11-11 18:09:14

+0

謝謝!最好的解釋!到目前爲止,術語「拉取請求」對我來說是神祕的。 – 2017-12-17 19:07:27

4

當您將修補程序發送給其他人時,您希望該人合併您的更改到他的存儲庫中。現在,pull是一個提取和合並。所以,如果這個人拉你的改變,他也會合並它,這就是你想要的。

1

當您提交拉取請求時,您會要求回購所有者在您的本地回購(即合併它們)中提取您的更改。然後,該回購將發佈(通過git push)公共回購,但這是暗示。

你不能調用這個「推送請求」,因爲沒有人推動你的改變,他們把他們拉。

9

拉取請求是何時沒有對儲存庫進行推送訪問的貢獻者想提交代碼以包含在項目中。例如,如果你在github上有一個項目,並且你是唯一擁有提交權限的人,並且我想在你的項目中包含代碼,我該怎麼做?

我將分叉您的github存儲庫併爲我的工作創建一個新的分支。一旦我對目前的實施感到滿意,我會向您發送一個請求,將我的分支git pull存入您的存儲庫(因爲我無權直接推送)。當您做git pull時,您可以選擇將哪個分支拉到哪個位置,以及您想要拉到哪個分支。也許你不想直接進入你的master分支,而是直接進入其他分支來檢查代碼。

git book在這樣的不同工作流程中有一個很好的部分。

1

您將提交從您的私有存儲庫推送到您的公共存儲庫。但是,您不能強制更改別人的存儲庫,因此您要求他們從您的公共存儲庫中取出他們的存儲庫。

相關問題