关于java:吵疯了Pull-Request到底是个啥

39次阅读

共计 2087 个字符,预计需要花费 6 分钟才能阅读完成。

在团队中我承当了 Committer 的责任,也就是帮共事们检视代码(Code Review)和合入代码,常常听到有共事在群里喊:“大佬,帮我合个 PR”,“大佬,我刚提交了一个 MR,帮忙合一下,急着出补丁”。我有点懵了,PR 和 MR 到底哪个才是正确的,这两个到底有什么区别,我决定先搞清楚这两个概念再合入他们的代码。[手动滑稽]

什么是 Pull Request?

PR 的全称是 Pull Request,常常用 Github 的同学对这个必定很相熟了。Github 汇集了 4000 万开发者,过亿的开源我的项目,如果想给他人的开源仓库奉献代码,通常是先 fork 他人的我的项目,而后本地批改实现提交到本人的集体 fork 仓库,最初提交 PR 期待他人合入你的代码。

Github 的工作流:

fork 工作流

咱们重点看一下第 6 步,小明写完代码了想合入到原作者的仓库,新建了一个“pull request”,拉申请?这明明是推啊,小明将本人的批改推到原作者的仓,感觉叫“push request”比拟适合吧。

既然 Github 保持叫“pull request”,咱们试着了解一下它的思路,小明写完代码了心里必定是在想:原作者大神,我改了点货色,你快把我的批改拉回去吧。站在原作者的角度思考,叫 pull request 如同也说得过去,每天有大量的人从我这里 fork 代码走,我只会拉取我感兴趣的代码回来。

我如同把本人压服了。

什么是 Merge Request?

MR 的全称是 Merge Request,置信玩过 Gitlab 的同学都晓得这个。

插播一下,Github 这么好用了为什么还有人玩 Gitlab,这就要几年前说起了。在微软没有收买 Github 之前,Github 下面所有的我的项目必须是公开的,也就是说本人很渣的代码也必须要公开,不能藏着噎着。然而在一些小的公司或者守业团队,代码这种外围资产是不心愿被公开,他们迫切需要私密仓这种需要,所以很多人都抉择了 Gitlab。当然前面 Github 也放开了公有仓库,这是后话了。

merge 工作流

团队中每个人都从近程仓库 develop 分支拉取代码,本地基于 develop 分支新建个性分支,批改完代码将个性分支推到近程仓,紧接着新建 Merge Request 冀望将本人的个性分支合入 develop 分支。

从下面这个流程来看 Merge Request 就是将本人的个性分支合入到骨干分支。

Pull Request VS Merge Request

总结一下下面两个例子。

Github 是玩 fork 模式的,开发者提交本人的代码新建 Pull Request,申请原作者:“把我的代码拉回去吧”。

Gitlab 是玩分支模式的,开发者提交本人的代码新建 Merge Request,想将本人的个性分支合并到骨干。

下面总结的如同很有情理,然而不要忘了,Github 也能够玩分支模式,Gitlab 也能够玩 fork 模式,更令人无语的是:

Github 上合并分支还是叫 Pull Request;Gitlab 上 fork 模式也是叫 Merge Request;

不行,这种答案我没法承受,去 stackoverflow 上搜一些大家是怎么了解的。果然有一个帖子很火:

Pull request vs Merge request

有一个答复摘取了 Gitlab 的官网解释:

Merge or pull requests are created in a git management application and ask an assigned person to merge two branches. Tools such as GitHub and Bitbucket choose the name pull request since the first manual action would be to pull the feature branch. Tools such as GitLab and Gitorious choose the name merge request since that is the final action that is requested of the assignee. In this article we’ll refer to them as merge requests.

翻译过去简略了解就是:这两个没有本质区别,站在不同立场说法不一样而已。

好了,官网曾经盖棺定论了,这两个就是一个货色,不要纠结啦~

疯狂吐槽

对于初学者来说,Github 的 pull request 的确让人难以了解,咱们去各大网站看看用户的声音。

StackOverflow

从国外到国内都有大量的用户对这个名字不了解,明明是提交提交代码,为什么是 pull request,有些人甚至狐疑是名字打错了。

如果让我来给 Github 取名字,我可能会取:

  • push request 推申请
  • merge request 合并申请

想多了,不会有如果。[嘿哈]

总结

Pull Request 和 Merge Request 实质上都是合入代码,只是站在不同角度有不同的说法而已,因而在学习和工作中无论用哪一个都没有问题。

参考:《2020 最新 Java 根底精讲视频教程和学习路线!》

链接:https://juejin.cn/post/692276…

正文完
 0