2

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

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

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

5个回答

13

已采纳

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

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

1

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

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

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

1

主动被动你已经分清楚了。

那么其实问题是,pull request是你请求上游仓库来拉取你的代码。而如果用push request就是你force推送代码到上游仓库。

其实这里push和pull并不是说这件事是你主动做的还是被动做的,而是指你的代码是你主动push上去的,还是你的代码被别人pull走的。

0

如果用gitlab。那么它的merge request 你应该容易理解的多

0

你没有权限 push 到别人的代码仓库, 你只能 push 到你的代码仓库, 然后请求别人拉取 (pull) 你的更改.

撰写答案