Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pull Request 与 Merge Request 的区别 #37

Open
brickspert opened this issue May 7, 2020 · 14 comments
Open

Pull Request 与 Merge Request 的区别 #37

brickspert opened this issue May 7, 2020 · 14 comments

Comments

@brickspert
Copy link
Owner

这篇文章只为说明一个问题:“Pull Request 与 Merge Request 有什么区别?”
在我的想象中,有一双滑板鞋~不好意思,跑偏了。
在我的想象中,它俩肯定是不一样的,并且大部分人的想法应该和我是一样的,我先来说说我的想法。

自我 YY

如果经常用 Github,一定十分了解 Pull Request。
如果经常用 Gitlab,一定十分了解 Merge Request。
基于对 Github 和 Gitlab 的了解,我潜意识里感知到 Pull Request 与 Merge Request 是有区别的。


Github 一般是公开库,当然没有人愿意别人直接在自己的仓库上面修改代码。所以我们如果要给别人的仓库贡献代码,一般是要 fork 一个仓库,在自己的仓库改完后,给原仓库提交 PR 请求,请求原仓库主人把你的代码拉(pull)回去
下图是一般的 Github 工作流程。
image.png


Gitlab 一般是私有库,一个团队维护一个仓库,通常大家会新建自己的分支,开发完成后,请求合并回主干分支。
下图是一般的 Gitlab 工作流程。
image.png


基于上面的认知,我起初觉得

  • Github 这种需要 fork 仓库的模式,应该叫 Pull Requset,请求目标仓库来拉你的代码。
    “我改了你们的代码,你们拉回去看看吧 !”
  • Gitlab 这种纯分支模式,应该叫 Merge Request,是自己请求把代码合并进主干。
    “请求合并代码!”


说实话,我自己都说服不了自己,上面的理解是正确的。毕竟

  • 在 Github 上也可以玩分支模式,提交合并请求同样用 Pull Request。
  • 在 Gitlab 上也可以玩 fork 模式,提交合并请求还是 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.

大概意思就是 Merge Request 和 Pull Request 是同一个东西,仅仅只是名字不一样。
一般我们执行分支合并,需要执行下面两个命令:

git pull // 拉回需要合并的分支
git merge // 合并进目标分支

Github 选择了第一个命令来命名,叫 Pull Request。
Gitlab 选择了最后一个命令来命名,叫 Merge Request。
这个理由是 Gitlab 官方给的,我觉得还是可信的。所以我们的结论就是**“Pull Request 和 Merge Request”是一个东西**。

吐槽

Pull Request 这个词起的真不好!我想起来我刚开始用 Github 的时候,根本看不懂 Pull Request 是干啥的。

  • Pull Request 是不是请求别人允许我拉他们的代码?如果我不请求,就不能拉别人的代码?
  • 提交代码是不是叫 Push Request 会更好?表示我想给别人的仓库 Push 代码。

如果我来起名的话,我应该会起这几个名字:

  • Merge Request 请求把代码合并进去
  • Push Request 请求把代码推进去
  • Check In Requset 发起代码准入检查
  • ......

无论如何也想不到 Pull Request,一个好名字还是非常非常重要的。网上能搜到很多人问 Pull Request 是什么意思,然后大家的解释都差不多“请求别人拉你的代码”。如果当时不用这个名字,大家一看就明白了,也不用问了。

image.png
又让我想起了小白时期被 redux 中的名词支配的恐惧, reducer 等新名字,看的我一愣一愣的。
就像我在 github 的简介中写的话一样,一切都是纸老虎。

有时候人们很喜欢造一些名字很吓人的名词,让人一听这个名词就觉得自己不可能学会,从而让人望而却步。但是其实这些名词背后所代表的东西其实很简单。



你有没有被奇奇怪怪的名字支配的恐惧呢?
如果是你,你会给 Pull Request 取什么名字呢?
欢迎留言互动,让大家看到你的想法。

❤️感谢大家

关注公众号「前端技术砖家」,拉你进交流群,大家一起共同交流和进步。

image

@wsafight
Copy link

我也觉得名字起的不好,我第一次去提 pr 时候,差点跑到对方项目里面去提一个

@xieyezi
Copy link

xieyezi commented Jun 10, 2020

名字花里胡哨,背后的道理往往很简单。大家都喜欢把名字起的很高大上,这样显得“专业”

@acmu
Copy link

acmu commented Aug 7, 2020

我就觉得你最开始说的很有道理

后面有点扯,但这才是真相😂

@JZYF
Copy link

JZYF commented Dec 24, 2020

我也觉得MR表达的更清晰,PR给我反向操作的感觉

@HXWfromDJTU
Copy link

pull requestpush request 其实都不明确,还真就是 merge request 最见名识义

@ZheruiL
Copy link

ZheruiL commented Apr 28, 2021

真的merge request名字要好太多

@unknownuser1-1
Copy link

没人觉得fork也莫名其妙吗

@mengban
Copy link

mengban commented Jun 23, 2021

没人觉得fork也莫名其妙吗

fork还好吧 类Unix系统里那么多fork()操作

@light-1986
Copy link

github的pull request ,github上的项目都是开源库,要想参与,就必须先fork别人的项目,然后提pr。如果你是项目的参与者,可以使用同一个仓库的分支进行pr,这两个词,确实没什么区别。

@NineLeo
Copy link

NineLeo commented Sep 10, 2021

知乎上一位老哥, 对pull request的解释
screenshot-20210910-111900

Chocolate1999 added a commit to LionCubFrontEnd/Chocolate-2022 that referenced this issue Jan 7, 2022
✅[Pull Request 与 Merge Request 的区别](brickspert/blog#37)
@deelew
Copy link

deelew commented Aug 23, 2022

我理解其实是主体问题吧,pull request 的主语是代码owner,而不是贡献者 :)

@maxpup
Copy link

maxpup commented Aug 18, 2023

清晰简洁,明白了,多谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

14 participants