Warum führt der Github-Aufrufcode Merge-Anfragen zu Pull-Anfragen statt zu Push-Anfragen?
三叔
三叔 2017-06-20 10:05:54
0
4
1205

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

Ich habe die Erklärung hier gelesen, aber ich habe immer noch das Gefühl, dass sie nicht überzeugend genug ist

Mein Verständnis ist: Ich habe einige Änderungen vorgenommen und bitte darum, meine Änderungen in Ihr Lager zu übertragen. Wenn es kein Problem gibt, wäre es nicht angemessener, es als a zu bezeichnen Push-Anfrage? Weil diese Operation von mir initiiert wurde. Pull ist ein Vorgang, der vom Warehouse-Eigentümer für mein Forked Warehouse initiiert wird. Daher sollte der Pull-Request-Vorgang vom Upstream-Warehouse-Eigentümer von mir initiiert werden, anstatt dass ich den Upstream-Warehouse-Eigentümer aktiv auffordere, den Code in mein Warehouse zu ziehen.

三叔
三叔

Antworte allen(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 你应该容易理解的多

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage