Keeping Upstream and Working git Repos In Sync

This tutorial is intended for git beginners who need to sync up their working repo with changes made to the upstream repo. Cloning repos within collaboration platforms such as gitlab will not be part of this tutorial.

Setup

For the purposes of this project, we will use https://github.com/w3c-social/activipy as the upstream repository. Create a clone of the project, and then clone your github repo to your dev environment.

At this point, the “origin” remote should be your working github repo of “activipy”. We need to add a “root” repo that upstreams to https://github.com/w3c-social/activipy.git since we want to make sure that we merge any merge/pull requests created by others before we submit our own merge/pull request.

Run the following to set up the “root” remote:

git remote add root https://github.com/w3c-social/activipy.git
git fetch root

For the sake of illustration, let’s pretend that while we were coding our contributions there pull requests accepted and added to the “root” repo. We need to merge those changes with ours before we submit our merge request. To do that, run the following:

git merge remotes/root/master

In the best case, our changes are simply fast-forwarded and everyone is happy. The more likely scenario is we end up with a “merge” commit. The worst case is we have conflicting changes. In that case, resolve all conflicts and follow directions printed on the screen to complete the merge.

At this point, git push your master branch to “origin/master” and you’re ready to submit a merge/pull request.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.