Why does GitHub call foreign submissions, a "Pull Request"?

The term “pull requests” comes from the distributed nature of how many open source projects organize themselves. Instead of just pushing your changes into the repository (like you would do with a centralized repository, e.g. with Subversion), you are publishing your changes separately and ask the maintainer to pull in your changes. The maintainer then can look over the changes and do said pull.


A pull request is when a contributor that does not have push access to a repository wants to submit code for inclusion in the project. For instance, if you have a project on github and you are the only person with commit rights and I want to include code in your project what do I do?

I'll fork your github repository and create a new branch for my work. Once I'm happy with the current implementation I'll send you a request to git pull my branch into your repository (since I don't have rights to push directly). When you do git pull you have the option of which branch to pull and where you want to pull to. Perhaps you don't want to pull directly into your master branch but into some other branch to examine the code.

The git book has a nice section on different work flows like this.