I've been working on open-source projects, which requires forking the open-source repository and making changes locally.
Before opening pull requests, it's important to get the latest version from the original open-source repository, and ensure that there are no conflicts with any of my local changes.
Here are some notes on syncing a fork with the upstream repository.
Configure a remote
upstream that points to the upstream (original) repository in Git. This is needed to sync changes you make in a fork with the original repository.
$ git remote -v > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
$ 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)
$ git checkout master > Switched to branch 'master'
master will be stored in a local branch,
$ 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
This syncs your fork's master branch with the upstream repository.
$ 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
Syncing your fork only updates your local copy of the repository.
$ git push origin master