HTTP/2 301
date: Tue, 14 Oct 2025 11:29:13 GMT
content-type: text/html; charset=utf-8
content-length: 0
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
location: https://github.blog/2012-05-02-how-we-use-pull-requests-to-build-github/
cache-control: no-cache
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
set-cookie: _gh_sess=wADQZ6vUkF4d3CxrjQql5k52mOCVm46XJ0ZM3IqL8lN1JYvNkwWBP2BqcAg0OEbrsa9ahVbzWFY72lS89BaOfJZ%2B1ceJa%2BIiizWxzGX30sEI1ggNWW%2FE5bponxHAQU8KbRQ717Utwyllhbc6FdUGbZrXG7tNdTJtTeTEfgHLKZl%2FSoEmH2lnQhn5KXHFjYMOK5y81BeJfCbYQn9snCLgl5ktw%2FbOvXolKvAmEqxA6NY8UNXE2B6Mo3j4poadDttzwA2JMuG2utqS1LNDANguCg%3D%3D--lYUSmVZAof1GsaYF--9JvPbwfj8ehR37p6Y9F%2Fcw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1959332119.1760441353; Path=/; Domain=github.com; Expires=Wed, 14 Oct 2026 11:29:13 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Wed, 14 Oct 2026 11:29:13 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: B20A:34A538:9F5106:BCBF26:68EE3409
HTTP/2 301
server: nginx
date: Tue, 14 Oct 2025 11:29:13 GMT
content-type: text/html; charset=utf-8
location: https://github.blog/engineering/how-we-use-pull-requests-to-build-github/
x-redirect-by: Yoast SEO Premium
x-rq: bom1 177 253 80
x-cache: MISS
strict-transport-security: max-age=31536000;includeSubdomains;preload
HTTP/2 301
server: nginx
date: Tue, 14 Oct 2025 11:29:14 GMT
content-type: text/html; charset=UTF-8
location: https://github.blog/news-insights/the-library/how-we-use-pull-requests-to-build-github/
x-hacker: If you're reading this, you should visit https://join.a8c.com/viphacker and apply to join the fun, mention this header.
x-powered-by: WordPress VIP
host-header: a9130478a60e5f9135f765b23f26593b
x-frame-options: SAMEORIGIN
x-redirect-by: WordPress
x-cache: MISS
x-rq: bom1 177 253 80
strict-transport-security: max-age=31536000;includeSubdomains;preload
HTTP/2 200
server: nginx
date: Tue, 14 Oct 2025 11:29:15 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
x-hacker: If you're reading this, you should visit https://join.a8c.com/viphacker and apply to join the fun, mention this header.
x-powered-by: WordPress VIP
host-header: a9130478a60e5f9135f765b23f26593b
x-frame-options: SAMEORIGIN
link: ; rel="https://api.w.org/"
link: ; rel="alternate"; title="JSON"; type="application/json"
link: ; rel=shortlink
content-encoding: gzip
x-rq: bom1 177 249 80
accept-ranges: bytes
cache-control: max-age=300, must-revalidate
x-cache: MISS
strict-transport-security: max-age=31536000;includeSubdomains;preload
How we use Pull Requests to build GitHub - The GitHub Blog
How we use Pull Requests to build GitHub
We recently shipped a new About section. It has all sorts of stuff like high resolution logos, pictures of the GitHub team, a little bit about our story, recent press…
May 2, 2012
|
Updated December 19, 2022
We recently shipped a new About section. It has all sorts of stuff like
high resolution logos, pictures of the GitHub team, a little bit about our story, recent press mentions and maybe most importantly positions
we’re hiring for . It’s awesome.
But that’s not the point of this post. Instead, let’s take
a look at how we used a massive Pull Request to ship this feature.
We talk a lot about how GitHub works in blog
posts and
talks and this is a great
example of how we use Pull Requests.
Here is what the PR looked like for the new
About page:
You’re looking at 130 commits and 91 comments from 10 different people over a two
month timespan. The discussion ranged from the original idea and HTML mock-up, to
Skitch mock ups from developers, to content strategy. There are designs posted
for review at various points. And of course, every commit to the branch is
tracked and ready for code review.
If you’ve ever talked to a GitHubber you’ll know we think Pull Requests are the
greatest thing ever. And not just because we invented them.
They are a great way to generate discussion around new ideas and recruit people to help out. Because we don’t have major organizational decisions, Pull Requests let people see what’s being worked on and they hop in where they think they’ll add the most value. It works a lot like an Open Source project.
Some tricks to make Pull Requests more awesome for your project:
Open a Pull Request as early as possible
Pull Requests are a great way to start a conversation of a feature, so start
one as soon as possible- even before you are finished with the code. Your
team can comment on the feature as it evolves, instead of providing all
their feedback at the very end.
Pull Requests work branch to branch
No one has a fork of github/github
. We make Pull Requests in the same repository by opening Pull Requests for branches.
A Pull Request doesn’t have to be merged
Pull Requests are easy to make and a great way to get feedback and track
progress on a branch. But some ideas don’t make it. It’s okay to close a
Pull Request without merging; we do it all the time.
Related posts
In September, we experienced three incidents that resulted in degraded performance across GitHub services.
AI is changing how software gets built. Explore the skills you need to keep up and stand out.
Why the U.S. Supreme Court case Cox v. Sony matters for developers and sharing updates to our Transparency Center and Acceptable Use Policies.
Explore more from GitHub
Docs
Everything you need to master GitHub, all in one place.
The ReadME Project
Stories and voices from the developer community.
GitHub Actions
Native CI/CD alongside code hosted in GitHub.
Enterprise content
Executive insights, curated just for you
We do newsletters, too Discover tips, technical guides, and best practices in our biweekly newsletter just for devs.