先说结论
PR(Pull Request) 和 MR(Merge Request) 两个术语想表达的意思是一模一样的,只是在不同平台的叫法不一样。PR(Pull Request)是 github 发起合并分支请求时的叫法,MR(Merge Request) 是 gitlab 发起合并分支请求时的叫法,一般在 github 会说 "提个 PR ",在 gitlab 会说 "提个 MR "。
下面是 github 上提 PR 的入口界面:
PR 的两个使用场景:
1、给自己没有权限的代码仓库提交分支合并请求,这种情况一般是自己想对一些开源项目进行一些代码贡献,但是因为没有开源项目的仓库权限,无法直接 push 到 master 分支,也无法在原始的开源项目中创建分支,这时需要自己手动 fork 开源项目到自己的 github 仓库中,对自己 fork 下来的仓库做完 commit 和 push 修改后,发起 pull request 请求,请求将这个分支合并到开源项目的目标分支,这种属于跨仓库合并分支。(说实话我也是第一次知道原来还可以不同仓库之间合并分支)
下面是给开源项目仓库提 PR 时的示例界面:
2、给自己有权限的代码仓库提交分支合并请求,这种情况是最主要的使用场景。pull request 界面会自动省去仓库名,只显示 源分支名和目标分支名。下面是给自己仓库提 PR 时的示例界面:
MR 界面示例
MR 是 gitLab 上合并分支请求的简写,示例界面如下。gitlab 的 MR 也有上面两种使用场景,但是两种场景的界面都是相同的。
在该界面中可以指定源仓库和源分支、目标仓库和目标分支,相当于 github上的两种界面合成了一种。