為什麼Github要把程式碼合併請求稱為pull request而不是push request?
三叔
三叔 2017-06-20 10:05:54
0
4
1141

https://stackoverflow.com/que...

我看了這裡面的解釋,感覺還是不夠有說服力啊

我的理解是:我做了一些修改,我請求把我的修改push到你的倉庫,然後你review一下我的程式碼,如果沒問題就接受請求merge,這樣的話叫做push request豈不是更合適?因為這個操作是我主動發起的。 pull是倉庫主向我fork的倉庫發起的操作,那麼pull request這種操作應該是要上游倉庫主來向我發起啊,而不是我主動讓上游倉庫主來pull我倉庫中的代碼。

三叔
三叔

全部回覆(4)
黄舟

是這樣的,這個應該分開來解釋。

這個pull指的是權限主體的操作。你提交了程式碼,但是你沒有操作上游repo的權限,你需要上游repo的主人review你的程式碼,然後把你的程式碼修改pull到他的repo中去,這是對於pull的解釋。

而request則指的是啟動主體的操作。也就是說,上游repo的主人雖然有repo的控制權,可以把你的程式碼更改pull到他自己的repo裡,但他不會主動去pull。而是需要你(發起主體)向上游repo的主人提交申請,也就是request,上游repo的主人才會去回應你的request,也就是執行你所說的review和pull的過程。

所以,pull request的理解方法是:一個通知上游repo所有者拉取代碼(pull)請求(request)

在英文中,request一般指的是提交一個申請,需要對方對申請給予答覆的。而request之前的修飾詞,則是答覆方的動作,當然,中文中也是一樣。例如“入團申請”,你提交申請之後,需要對方允許你入團你才算是團員。所以,入團的動作不是你主動做的,而是由審核的人把你的名字加上去才算「入團」。在同理「pull request」中,request是你提交的,而pull則是對方做的事情。

大家讲道理

換一個寫法,xxx request 可以寫成 "request for xxx",這樣應該會好懂一些。

括號中的 someone 代表省略的部分。

request (someone) for pushpush 的執行者是 "someone",因此這個 "someone" 就是你,因為是你 push 程式碼。如果是 request (someone) for pull,那麼這個 pull 執行者就是程式碼庫的擁有者,因此就是你請求別人 pull。顯然是後者更符合實際情況。

为情所困

主動被動你已經分清楚了。

那麼其實問題是,pull request就是你請求上游倉庫來拉取你的程式碼。而如果用push request就是你force推送程式碼到上游倉庫。

其實這裡push和pull並不是說這件事是你主動做的還是被動做的,而是指你的程式碼是你主動push上去的,還是你的程式碼被別人pull走的。

为情所困

如果用gitlab。那麼它的merge request 你應該容易理解的多

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!