Merge Request 与 Pull Request 的区别

Merge Request 与 Pull Request 的区别

    • Pull Request 与 Merge Request 有什么区别?
    • 使用场景
    • 实际情况
    • 个人看法

Pull Request 与 Merge Request 有什么区别?

在我之前的印象中,PR与MR应该是不同的,相信大部分人也会有这种想法吧。

使用场景

如果经常用 Github,对 Pull Request 应该是有一定的了解。

如果经常用 Gitlab,对Merge Request 应该是有一定的了解。

基于对 Github 和 Gitlab 的了解,基于两者使用场景的不同,我们应该了解到 Pull Request 与 Merge Request 是有区别的。

Github 一般是公开库,当然没有人愿意别人直接在自己的仓库上面修改代码。当然当其他人想要给自己合并代码时,一般是要 fork 一个仓库,然后在开发者自己的仓库开发,开发完成后给原创仓库提交PR合并请求,请求原仓库主人把你的代码拉(pull)回去。

下图是一般的 Github 工作流程。

Merge Request 与 Pull Request 的区别_第1张图片

Gitlab 一般是公司的私有库,一个工作团队维护一个仓库,通常大家会新建自己的开发分支,开发完成后,把代码合并到主分支。

下图是一般的 Gitlab 工作流程。

Merge Request 与 Pull Request 的区别_第2张图片

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

  • 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. In this article we’ll refer to them as merge requests.

大概意思就是 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 是什么意思,然后大家的解释都差不多“请求别人拉你的代码”。如果当时不用这个名字,大家一看就明白了,也不用问了。

你可能感兴趣的:(gitlab,github,gitlab)