- Published on
Pull Request vs Merge Request
- Authors

- Name
- Gabriel
- @gabriel__xyz
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?
- What is a Merge Request?
- Common Goals
- Terminology by Platform
- Where "Pull Request" Comes From
- Where "Merge Request" Comes From
- Why the Terminology Matters
- Workflow
- Merge Strategies
- Draft Pull Requests and Draft Merge Requests
- Feature Comparison
- Conclusion
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:
| Platform | Term Used |
|---|---|
| GitHub | Pull Request |
| Bitbucket | Pull Request |
| Azure DevOps | Pull Request |
| GitLab | Merge 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:
- Clone or fork the repository.
- Create a new branch for your changes (e.g.,
feature/add-loginorfix/header-bug). - Make your changes — write code, add tests, update documentation.
- Push your branch to the remote repository.
- Open a Pull Request / Merge Request — provide a title, description, and select reviewers.
- Review and discuss — reviewers examine the changes, leave comments, and request modifications if needed.
- Pass automated checks — CI/CD pipelines run tests, linting, and other checks.
- 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:
| Strategy | Description | Available On |
|---|---|---|
| Merge commit | Creates a merge commit preserving all individual commits | GitHub, GitLab, Bitbucket |
| Squash and merge | Combines all commits into a single commit before merging | GitHub, GitLab, Bitbucket |
| Rebase and merge | Replays 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:
| Feature | GitHub (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.