本文转载自:https://blog.csdn.net/azl397985856/article/details/106088794
这篇文章只为说明一个问题:“Pull Request 与 Merge Request 有什么区别?”
在我的想象中,它俩肯定是不一样的,并且大部分人的想法应该和我是一样的,我先来说说我的想法。
自我 YY
如果经常用 Github,一定十分了解 Pull Request。
如果经常用 Gitlab,一定十分了解 Merge Request。
基于对 Github 和 Gitlab 的了解,我潜意识里感知到 Pull Request 与 Merge Request 是有区别的。
Github 一般是公开库,当然没有人愿意别人直接在自己的仓库上面修改代码。所以我们如果要给别人的仓库贡献代码,一般是要 fork 一个仓库,在自己的仓库改完后,给原仓库提交 PR 请求,请求原仓库主人把你的代码「拉(pull)回去」。
下图是一般的 Github 工作流程。
Gitlab 一般是私有库,一个团队维护一个仓库,通常大家会新建自己的分支,开发完成后,请求合并回主干分支。下图是一般的 Gitlab 工作流程。
基于上面的认知,我起初觉得
-
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”是一个东西。