Skip to main content
CodePulse
All Guides
Delivery

What Is a Pull Request? (Plain-English Guide)

What a pull request actually contains, how it moves from open to merge, and how the GitHub, GitLab, and Bitbucket versions of the concept line up.

Ashley RussellAugust 25, 20268 min read
What Is a Pull Request? (Plain-English Guide) - visual overview

See exactly where your delivery flow is waiting

Preview the phase-by-phase report for review pickup, active review, and merge time. Connect in about five minutes; the initial analysis runs after sync.

Preview the Sample Report·Analyze My GitHub Data

Read-only GitHub · Your code stays yours · Team-level by default · No credit card

A pull request is the unit almost everything else in modern software delivery gets measured against - cycle time, review coverage, deployment frequency, even performance conversations - so it's worth being precise about what it actually is, not just how to use one. This is the short, definitional version: what a PR contains, what it's for, and how the GitHub and GitLab versions of the concept line up.

What is a pull request?

A pull request (PR) is a request to merge a set of code changes from one branch into another, most commonly from a feature branch into main. It bundles the relevant commits, shows a line-by-line diff of what changed, and gives a team a structured place to review, comment, request changes, and approve before the code merges. GitLab calls the identical concept a merge request (MR) - same workflow, different name. Beyond code review, a PR is also where CI checks run against the proposed change and where the permanent record of what changed (and why) lives.

The concept predates GitHub itself - it comes from the distributed Git workflow, where a contributor without write access to a repository would ask ("request") the maintainer to "pull" their changes from a separate copy. GitHub built a web UI around that workflow and the name stuck, even though today most PRs are opened by teammates who already have write access and are using the PR purely for review, not permission.

The name is a historical artifact. What a pull request actually is, today, is a checkpoint - the one place in the workflow where a human (or a bot) looks at a change before it becomes permanent.

What Does a Pull Request Actually Contain?

A pull request is built from a handful of parts that show up the same way on GitHub, GitLab, and Bitbucket alike, even though the exact UI differs. The diff is the core: every added, removed, or changed line across every file the branch touches, shown either file-by-file or as a unified patch. The title and description carry the human context a diff alone can't - what changed, why, and often a link to the issue or ticket it addresses. Commits are the individual, ordered changes that make up the branch; a PR can be one commit or fifty. Checks are automated CI runs (tests, linting, security scans) triggered by the PR, reported as pass/fail statuses before a human even opens the diff. And reviews are the approve/request-changes/comment verdicts teammates leave, which most teams gate merging on.

Feature branchPull requestdiff + checks + reviewCI checks runHuman reviewMerged to main
The same shape whether you call it a pull request or a merge request: propose, check, review, merge.
See where your delivery slows down, and why. See an example report

How Does a Pull Request Move Through Its Lifecycle?

A PR starts the moment a developer opens it against a target branch (almost always main), which is also the point most teams start measuring cycle time from. CI checks typically run automatically on open and on every subsequent push to the branch. A reviewer - assigned manually, by a CODEOWNERS file, or by a load-balancing tool - reads the diff and leaves a verdict. If changes are requested, the author pushes fixes and the cycle repeats. Once required approvals and checks pass, the PR becomes mergeable, and merging closes it and (usually) deletes the source branch.

Two variants are worth knowing by name because they change what "open" means. A draft pull request signals "not ready for review yet" - useful for early feedback or just to trigger CI without asking anyone to read it closely. A PR can also sit stale: opened, apparently ready, but abandoned mid-review for days or weeks, which is its own delivery-health signal worth tracking separately from normal cycle time.

PlatformName for the concept
GitHubPull request (PR)
BitbucketPull request (PR)
GitLabMerge request (MR)
Azure DevOpsPull request (PR)

* Our Take

The pull request is the closest thing software delivery has to a universal unit of measurement - which is exactly why it's worth defining precisely instead of assuming everyone means the same thing by it.

"Cycle time" means nothing without agreeing on when a PR's clock starts. "Review coverage" means nothing without agreeing on what counts as a real review versus a rubber stamp. Get the definition right first; the metrics built on top of a fuzzy definition are fuzzy too.

Identify bottlenecks slowing your team. See an example report

Where Does CodePulse Fit?

CodePulse's entire metrics layer is built on top of the pull request as the unit of analysis - every cycle time number, every review coverage percentage, every investment category is computed per PR, then rolled up to repository, team, and org level.

* How to See This in CodePulse

Navigate to Dashboard to see every pull request in your repositories broken down automatically:

  • Cycle time split into coding, waiting-for-review, in-review, and merge phases
  • Review coverage and merge-without-approval rate across the team
  • Pair it with our pull request checklist to see whether the practices you've written down actually show up in the data

For the deeper analytics picture beyond the definition, see our GitHub pull request analytics guide, and for the practical author/reviewer standards, our pull request checklist.

If you want to see your own pull request metrics broken down automatically, start a free CodePulse trial. It reads directly from your GitHub history, so there's nothing to configure before you see real numbers.

Frequently Asked Questions

A pull request is a request to merge changes from one branch into another - most often from a feature branch into main. It bundles a set of commits, shows exactly what changed line by line, and gives teammates a place to comment, request changes, and approve before the code actually merges. The name comes from the workflow it originated in: you're asking the maintainer to 'pull' your changes into their branch.

CodePulse dashboard highlighting the team's biggest delivery bottleneck

Find out which phase is holding your delivery up

CodePulse splits your cycle time into coding, waiting for review, active review, and merge, so you fix the queue that is actually costing you days. Read-only GitHub, no credit card.

Read-only GitHub · Your code stays yours · Team-level by default · No credit card