https://stackoverflow.com/que...
我看了这里面的解释,感觉还是不够有说服力啊
我的理解是:我做了一些修改,我请求把我的修改push到你的仓库,然后你review一下我的代码,如果没问题就接受请求merge,这样的话叫做push request岂不是更合适?因为这个操作是我主动发起的。pull是仓库主向我fork的仓库发起的操作,那么pull request这种操作应该是要上游仓库主来向我发起啊,而不是我主动让上游仓库主来pull我仓库中的代码。
黄舟2017-06-20 10:07:54
是这样的,这个应该分开来解释。
这个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则是对方做的事情。
大家讲道理2017-06-20 10:07:54
换一个写法,xxx request
可以写成 "request for xxx",这样应该会好理解一些。
括号中的 someone
代表省略的部分。
request (someone) for push
,push
的执行者是 "someone",因此这个 "someone" 就是你,因为是你 push
代码。如果是 request (someone) for pull
,那这个 pull
执行者就是代码库的所有者,因此就是你请求别人 pull
。显然是后者更符合实际情况。
为情所困2017-06-20 10:07:54
主动被动你已经分清楚了。
那么其实问题是,pull request是你请求上游仓库来拉取你的代码。而如果用push request就是你force推送代码到上游仓库。
其实这里push和pull并不是说这件事是你主动做的还是被动做的,而是指你的代码是你主动push上去的,还是你的代码被别人pull走的。