How to sync a forked repository with the original and ensure it is up to date.
I've finally got around to contributing to some Open Souce projects in a more meaningful way than simply making comments and raising issues. I recently had PR accepted into a project, but today I noticed that after some recent breaking changes the example no longer built.
The breaking changes were relatively minor and easy to correct. However the original project had moved on a quite a bit since I made my original fork and I needed to get then back in sync. This post shows the steps involved - and how simple they are.
Add a Remote
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
Confirm that the upstream is added
git remote -v
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
Check out your fork's local master branch.
git checkout 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
Update GitHub Fork
Syncing your fork only updates your local copy of the repository. To update your fork on Github you will need to push your changes.
git push <REMOTENAME> <BRANCHNAME>