很多人在用 Git 管理代码时,常常听到“合并请求”和“拉取请求”,听着差不多,但到底有啥不一样?其实这俩词不是技术上的差别,而是不同平台叫法不同。
拉取请求(Pull Request)是 GitHub 的说法
你在 GitHub 上改完代码,想把自己的分支提交给主项目,就得发起一个 Pull Request。字面意思是“我拉一下,请你看看能不能合进去”。比如你参与了一个开源项目,fork 了代码,改了个 bug,然后点“New pull request”,就是告诉原作者:“我这儿有个修改,你要不要拉过去?”
合并请求(Merge Request)是 GitLab 的习惯叫法
GitLab 上干的是差不多的事,但不叫 Pull Request,而是叫 Merge Request。同样是基于分支开发,改完后点“Create merge request”,意思是你希望把某个分支的代码合并到目标分支里。虽然名字不同,流程几乎一模一样:代码对比、评论、审批、自动测试通过后合并。
可以这么记:GitHub 用“Pull”,GitLab 用“Merge”。就像北方叫“土豆”,南方叫“马铃薯”,东西是一个。
实际使用中没啥影响
如果你平时只用 GitHub,那你说“PR”大家就懂;如果团队用的是 GitLab,说“MR”也没问题。很多开发者混着用也不影响沟通。比如有人在 GitLab 的群里说“提个 PR”,别人照样明白是指提交代码审核。
有些工具甚至做了兼容。比如 CI 配置文件里写 trigger: pull_request,其实在 GitLab 也能通过配置识别类似的事件。
举个生活化的例子
这就跟寄快递一样。你在京东买东西,叫“下单”;在淘宝买东西,也叫“下单”。动作一样,平台术语略有不同。Pull Request 和 Merge Request 就是这个关系——本质都是“我改好了,你看看能不能收下”。
代码协作平台的影响
现在很多平台都支持两种术语互相映射。比如 Azure DevOps 叫“Pull Request”,Bitbucket 也是。而 Gitee、GitLab 都用“合并请求”。新出的平台有时会同时显示两个词,避免新人困惑。
团队协作时不用太纠结叫法,关键是流程走对:分支隔离开发、提交记录清晰、审查到位、测试通过再合并。