How to apply unmerged upstream pull requests from other forks into my fork?
Update: Via Webpage
You can also do this via the github webpage.
I assume, you should have already a fork (MyFork
) of the common repo (BaseRepo
) which has the pending pull request from a fork (OtherFork
) you are interested in.
- Navigate to the fork (
OtherFork
) which has initiated the pull request which you like to get into your fork (MyFork
) - Go to the pull requests page of
OtherFork
- Click new pull request
- The pending pull request(s) should be offered. Remember to select proper
OtherFork
branch too. Select on the left side as the base fork your fork (MyFork
) (IMPORTANT). - Now the option of
View pull request
should change toCreate pull request
. Click this.
Now you should have a pending pull request in your fork (MyFork
), which you can simply accept.
You can do it manually quite easily:
add the other fork as a remote of your repo:
git remote add otherfork git://github.com/request-author/project.git
fetch his repo's commits
git fetch otherfork
You have then two options to apply the pull request (if you don't want to choose pick 1.)
If you don't care about applying also the eventual commits that have been added between the origin and the pull request, you can just rebase the branch on which the pull request was formed
git rebase master otherfork/pullrequest-branch
If you only want the commits in the pull request, identify their SHA1 and do
git cherry-pick <first-SHA1> <second-SHA1> <etc.>
Like Tekkub said previously, you can just pull the branch in directly. Most of the time with GitHub, the branch is simply "master" on the requesting User's fork of the project.
Example: git pull https://github.com/USER/PROJECT/ BRANCH
And as a pratical example:
Say you forked a github project called safaribooks and there is the following pull request, in the originating project, that you want to put in your fork:
Then, in your fork's cloned project folder, run:
git pull https://github.com/fermionic/safaribooks.git fix-str-decode