How do I merge a pull request on someone else's project in git?

GitGithubPull Request

Git Problem Overview


I cloned this repo on my computer: https://github.com/derobins/wmd.git

There are several bugs with it though, and it looks like another user has fixed them and issued "Pull requests" (I assume these are requests for their changes to be committed?)

Is it possible to merge those changes into my local version?

EDIT: just to be clear, this is not my repository. I am using the WMD editor from derobins, but it has several bugs which those pull requests purport to fix. I have cloned the repo on Ubuntu (not in github) and was hoping to merge those changes in if possible.

Git Solutions


Solution 1 - Git

(GitHub has very thorough documentation on how to deal with pull requests.)

Essentially, you'll want to add a remote for the repository of the person who made the pull requests, e.g.:

git remote add helpful git://github.com/helpful-person/whatever.git

... then fetch their changes into remote-tracking branches:

git fetch helpful

... so that now you have all the commits from that person's GitHub repository in your clone of the upstream repository. If you look at the additional commits within that pull request you could:

  1. merge the latest one, e.g. git merge 75708aeab5
  2. cherry pick each of those changes, e.g. git cherry-pick 2142db89, git cherry-pick 75708aeab5
  3. create a local branch to work on them further, e.g. git checkout -b fix-for-issue3 75708aeab5
  4. etc. etc.

An alternative is to just clone the repository of the contributor who made the pull requests instead, if that's the same but for those fixes.

Solution 2 - Git

The accepted answer suggests to clone or add remote for the repository of the person who made the pull request. Another cleaner and simpler way is to use this command

git pull https://github.com/otheruser/repo.git branchname

For example, at the time of writing, ghi has three open pull requests that haven't been merged yet. This is what I did to merge them into my local repo.

# I want to make sure my master is in sync with the upstream master
git checkout -b merge-patches master
# first pull request
git pull --no-ff https://github.com/TiddoLangerak/ghi.git master
# second pull request
git pull --no-ff https://github.com/wayfare/ghi.git master

Note that both pull requests were sent from master that is why I pulled from their master branch.

This way, other repositories do not get added to your remotes, neither you have to cherry pick or clone them locally.

Solution 3 - Git

You clone the repo to you github account. Then just visit the forkqueue of your cloned repo and choose the patches you want to merge in to your repository.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDisgruntledGoatView Question on Stackoverflow
Solution 1 - GitMark LongairView Answer on Stackoverflow
Solution 2 - GitAndrew-DufresneView Answer on Stackoverflow
Solution 3 - GitkalkinView Answer on Stackoverflow