2

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

我看了这里面的解释,感觉还是不够有说服力啊

我的理解是:我做了一些修改,我请求把我的修改push到你的仓库,然后你review一下我的代码,如果没问题就接受请求merge,这样的话叫做push request岂不是更合适?因为这个操作是我主动发起的。pull是仓库主向我fork的仓库发起的操作,那么pull request这种操作应该是要上游仓库主来向我发起啊,而不是我主动让上游仓库主来pull我仓库中的代码。

查看全部 5 个回答

1

换一个写法,xxx request 可以写成 "request for xxx",这样应该会好理解一些。

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

request (someone) for pushpush 的执行者是 "someone",因此这个 "someone" 就是你,因为是你 push 代码。如果是 request (someone) for pull,那这个 pull 执行者就是代码库的所有者,因此就是你请求别人 pull。显然是后者更符合实际情况。

推荐答案

11

已采纳

是这样的,这个应该分开来解释。

这个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则是对方做的事情。