PullNotifier Logo
Published on

Pull Request vs Merge Request

Authors

TLDR; They mean the same thing. The only difference is terminology: GitHub, Bitbucket, and Azure DevOps use "Pull Request," while GitLab uses "Merge Request." The workflow, features, and purpose are identical.


In software development, Pull Requests and Merge Requests are the primary mechanisms for proposing, reviewing, and integrating code changes. Despite the different names, they refer to the same process. Let's break down where the terminology comes from, how the workflow works, and what features each platform offers.

Key Takeaways

  • Pull Requests and Merge Requests are the same concept — they both let you propose code changes, request reviews, and merge into the main branch.
  • The difference is purely terminology: GitHub, Bitbucket, and Azure DevOps use "Pull Request," while GitLab uses "Merge Request."
  • The workflow is identical across platforms: create a branch, make changes, open a request, get reviews, and merge.
  • All major platforms offer equivalent automation features like required status checks, approval rules, and branch protection.
  • The platform you use determines the term — not any difference in functionality.

Definition and Purpose

What is a Pull Request?

A pull request (PR) is a method used in software development to propose changes to a codebase. Pull requests (PRs) are a way to change, review, and merge code in a Git repository on platforms like GitHub, Bitbucket, and Azure DevOps. PRs can come from branches within the same repository or from forks of the repository. They facilitate code review, discussion, and approval before the changes are merged into the main branch.

The name "pull request" comes from the Git perspective: you're asking the repository maintainer to pull your changes into the main branch.

What is a Merge Request?

A merge request (MR) is GitLab's term for the same concept. It serves the exact same purpose — proposing changes, reviewing code, and merging it into the main branch. The name "merge request" describes the action from the other direction: you're requesting that your changes be merged into the target branch.

Common Goals

Both pull requests and merge requests exist to:

  • Propose changes — Let team members see what you want to change before it's integrated.
  • Enable code review — Reviewers can comment on specific lines, suggest changes, and approve or request modifications.
  • Maintain quality — Automated checks (CI/CD pipelines, linting, tests) can run before any code is merged.
  • Preserve history — Each request creates a record of what changed, why, who reviewed it, and when it was merged.

Terminology by Platform

Here's a clear breakdown of which platforms use which term:

PlatformTerm Used
GitHubPull Request
BitbucketPull Request
Azure DevOpsPull Request
GitLabMerge Request

Where "Pull Request" Comes From

The term pull request originates from Git itself. In Git's distributed model, you pull changes from one repository into another. GitHub, Bitbucket, and Azure DevOps adopted this terminology because it reflects the underlying Git operation — you're requesting that the maintainer pull your branch into the main branch.

Where "Merge Request" Comes From

GitLab chose merge request because it describes the end result more intuitively: you're requesting that your branch be merged. For users who aren't deeply familiar with Git internals, "merge request" can be easier to understand because it directly describes what happens — two branches get merged together.

Why the Terminology Matters

The difference in naming can cause confusion, especially for developers who switch between platforms or collaborate across organizations. If you see someone reference a "merge request" and you're used to GitHub, just know they're talking about the same thing. For a deeper dive into the nuances, Codium's comparison of pull requests and merge requests provides additional context. The underlying process is identical.

Workflow

The workflow for a Pull Request and a Merge Request is identical, regardless of platform:

  1. Clone or fork the repository.
  2. Create a new branch for your changes (e.g., feature/add-login or fix/header-bug).
  3. Make your changes — write code, add tests, update documentation.
  4. Push your branch to the remote repository.
  5. Open a Pull Request / Merge Request — provide a title, description, and select reviewers.
  6. Review and discuss — reviewers examine the changes, leave comments, and request modifications if needed.
  7. Pass automated checks — CI/CD pipelines run tests, linting, and other checks.
  8. Merge — once approved and all checks pass, the changes are merged into the target branch.

Merge Strategies

Both GitHub and GitLab (and other platforms) support multiple merge strategies. The choice of strategy affects your Git history:

StrategyDescriptionAvailable On
Merge commitCreates a merge commit preserving all individual commitsGitHub, GitLab, Bitbucket
Squash and mergeCombines all commits into a single commit before mergingGitHub, GitLab, Bitbucket
Rebase and mergeReplays commits on top of the target branch (linear history)GitHub, GitLab, Bitbucket

The merge strategy is a team decision, not a platform limitation. All major platforms support all three strategies.

Draft Pull Requests and Draft Merge Requests

Both GitHub and GitLab support opening a request in draft mode. Draft PRs/MRs signal to your team that the work is still in progress and not yet ready for formal review. This is useful for:

  • Getting early feedback on an approach before the code is complete.
  • Running CI checks on work-in-progress code.
  • Sharing context with teammates without triggering review notifications.

Feature Comparison

A common misconception is that one platform offers more features than the other. In reality, GitHub and GitLab have reached feature parity on the core PR/MR workflow:

FeatureGitHub (PR)GitLab (MR)
Required approvals
Required status checks (CI must pass)
Code owner reviews
Branch protection rules
Auto-merge when checks pass
Draft / WIP mode
Inline code comments
Suggested changes in review
Merge strategies (merge, squash, rebase)

Both platforms let you enforce quality gates — requiring tests to pass, a minimum number of approvals, or code owner sign-off before any code can be merged.

Conclusion

Pull Requests and Merge Requests are the same thing with different names. GitHub, Bitbucket, and Azure DevOps call them Pull Requests. GitLab calls them Merge Requests. The workflow, features, and purpose are identical across all platforms.

Don't let the terminology confuse you — focus on what matters: writing clear descriptions, keeping changes small and reviewable, and using your platform's automation features to enforce code quality. Whichever term your team uses, the goal is the same — better code through collaboration and review.


PullNotifier sends GitHub pull request notifications to Slack so your team reviews PRs faster. Works with both GitHub PRs and GitLab MRs. Try it free.