I have a Github repository that I forked from some other project several months ago. It is now several months later and the original master repo has changed. I would like to update my repo to reflect those changes. Is this possible in the Github web interface? Or do I just need to delete the repo and re-fork it?
You can try and reverse how pull requests happen.
- Go to your fork
Issue a Pull Request
By default this will be your fork on the right (head repo) requesting to push its commits and changes to the original repo (base repo) on the left.
Click the drop down for both base repo and head repo and select each other's repos.
You want yours listed on the left (accepting changes) while the original repository is on the right (the one with changes to push). As illustrated in this image:
Send the pull request
If your fork has not had any changes, you should be able to automatically accept the merge.
If your code somehow conflicts or is not quite clean enough, then this will not work to update via the GitHub web interface and you will need grab the code and resolve any conflicts on your machine before pushing back to your fork.
It's gonna be easier.
- Go to the Forked Repo (yours) and just click button - "New pull request".
- On the page that opens, there is a small link to "switching base" in the message underneath the dropdownselects. Click the link.
- Now it will automatically lead to your original repo. Click Create Pull Request button and write some commit message.
- Now it will lead to your forked repo automatically, click Merge pull request and Confirm merge to finish.
How to update a forked GitHub repo with changes from the remote upstream repository
Instructions from GitHub Help:
Setup / Operation Instructions:
Open Git Bash (Windows) or Linux / Mac Terminal
If you have not yet cloned your repository, you must change to the working directory of your development folder and clone it to your workstation.
$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git
Change to the working directory of your forked repo on your workstation.
$ cd /user/development/my_forked_repo/
List the current configured remote repository for your fork.
$ git remote -v origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
Specify a new remote upstream repository that will be synced with the fork.
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
Verify the new upstream repository you've specified for your fork.
$ git remote -v origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
Fetch the branches and their respective commits from the upstream repository. Commits to master will be stored in a local branch, upstream/master.
$ git fetch upstream remote: Counting objects: 75, done. remote: Compressing objects: 100% (53/53), done. remote: Total 62 (delta 27), reused 44 (delta 9) Unpacking objects: 100% (62/62), done. From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY * [new branch] master -> upstream/master
Check out your fork's local master branch.
$ git checkout master Switched to branch 'master'
Merge the changes from upstream/master into your local master branch. This brings your fork's master branch into sync with the upstream repository, without losing your local changes.
$ git merge upstream/master Updating a422352..5fdff0f Fast-forward README | 9 ------- README.md | 7 ++++++ 2 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 README create mode 100644 README.md
If your local branch didn't have any unique commits, Git will instead perform a "fast-forward":
$ git merge upstream/master Updating 34e91da..16c56ad Fast-forward README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
You will now need to push the commits to your fork.
$ git push
If you are not already authenticated, it will prompt for your github username / password. Once authenticated the new commits should be pushed to your fork and visible on github.