Skip to main content

The six types of pull requests you see on GitHub

4 min read
: Not all pull requests are created equal. From quick heads-ups to line-by-line reviews, here are six distinct strategies for using pull requests to collaborate on GitHub.
Table of contents

Whether collaborating on code, data, or prose text, there are lots of different strategies for using pull requests on GitHub. I once saw a post that outlined a handful of ways teams use pull requests, that seems to be subsequently lost forever, despite looking high and low. Here’s how I see pull requests used at GitHub:

Just a heads up#

How it works: Create a pull request and immediately merge it yourself without others’ review.

When to use it: When you’re making a change so uncontroversial or straightforward that no review is required, but you want to let your teammates know that you’ve made the change. Dependency bumps are a good use case.

Sanity check#

How it works: Submit a pull request with a minor change, wait a short period for a sniff-test review, and self merge.

When to use it: When you’ve got a small change, potentially in a part of the codebase outside your area of expertise, and you’d like someone with more experience to provide a quick 👍 before you merge the change.

Draft pull request (formerly work-in-progress/WIP)#

How it works: Open a draft pull request.

Related draft pull requests announcement blog post

When to use it: When you’ve started a new feature, document, or bugfix, that’s not quite ready for others to review, but you want to let your teammates know that you’re working on the feature. This can be used to prevent the duplication of effort, save work that you’ve started, or complement your team’s workflow.

Early feedback#

How it works: Roughly spike out a feature by creating a proof of concept or rough outline that expresses your idea in its final form.

When to use it: When you want feedback on your general approach or the idea itself. Is this a dumb idea? Is there a better way to do this? The content of the pull request exists to convey the idea, and will likely not be the final implementation. This may start as a WIP and may end with a line-by-line review.

Line-by-line review#

How it works: Submit a feature-complete pull request and cc relevant teams, asking for their review. Team members will comment line-by-line and re-review as you implement their changes.

When to use it: When you’re ready to 🚢 the thing. It may have been started as a work in progress, or for early feedback, but you’ve made it clear that unless you hear otherwise, you’re going to hit merge.

Pull request to a pull request#

How it works: You submit a pull request that, instead of requesting a merge into the main branch, requests that its changes be merged into a branch that is the basis of another pull request.

When to use it: When you don’t have write access to the source repository (for example, open source), and would like to make substantial changes to an existing pull request created by another user. For smaller changes, use line-by-line comments with the proposed code.

Originally published December 8, 2015 View revision history
Share

More to explore

Pull requests are a form of documentation

3 min read

Pull requests capture not just what changed, but who, why, and what alternatives were considered. Treat every PR as a time capsule for future contributors.

15 rules for communicating at GitHub

16 min read

How GitHub uses issues and chat for async communication — fifteen rules that eliminate the 'you had to be there' problem in corporate workflows.

Manage like an engineer

8 min read

If issues, pull requests, and project boards are the best way to develop software, should they not also be the best way to manage software development?

Merge by committee

7 min read

Reviewing pull requests in weekly committee meetings kills open source projects. Decentralize governance and reduce information imbalance.

Ben Balter

I'm Ben Balter — I write here about engineering leadership, open source, and showing your work. By day I'm Director of Hubber Enablement at GitHub, where I help thousands of GitHubbers do their best remote work. Before this role: Chief of Staff for Security, enterprise PM, and GitHub's first Government Evangelist. Before GitHub: attorney, Presidential Innovation Fellow, and member of the White House's first agile development team. More about the author →

Follow along: Bluesky LinkedIn

This page is open source Help improve this article on GitHub