Devtantra Blog

Tutorials about Android, Angular, ReactJS, PHP, MySQL and Web Development

Keep a Downstream git Repository Current with Upstream Repository Changes

Git is a very wonderful and revision management system as we all developer know it. Git has itself an advance level bus architecture. Today Git is very useful for every IT industries they are using it very frequently. But still Git has hold many hidden features, which we have not know yet. So today I am going to share one of them.

It is Upstream and Downstream. Before trying to understand what the upstream tracking branch is, you need to be familiar with remote branches (e.g. origin/master). If you are not, you probably want to read the section about them in the Pro Git book here.

To see all your remote tracking branches, you can use

git branch –remotes

The upstream tracking branch

Even if you have never heard of the concept, you probably already have at least one upstream tracking branch: master -> origin/master. When you clone a repository the current HEAD (usually ‘master’) is checked out for you, but also, it’s setup to track ‘origin/master’, and thus ‘origin/master’ is the “upstream” of ‘master’.

This has some implications on some Git tools, for example, when you run ‘git status‘ you might see a message like this:

# Your branch is behind 'origin/master' by 1 commit.

Also, if you run ‘git branch -vv‘:

* master 5002ca22 [origin/master: behind 1] Add bash_profile

This is useful in order to keep your local branches synchronized with the remote ones, but it’s only scratching the surface.

Problem

A downstream repository (aka a “fork”) maintainer commonly needs to stay current with upstream work. The following steps allow you to achieve this on the command line in a local git repository.

Steps

Add the Remote Upstream Repository

This step defines the upstream repository of your fork.

$ git remote add upstream [Upstream git URL]

Fetch the Upstream Branches

$ git fetch upstream

Merge Upstream Changes into your Downstream Repository

From your master branch, use the following merge command to merge the upstream master branch changes into your local source:

$ git merge upstream/master

Create a New Branch for Work

Create a branch off of the master branch that will include the new work. While working in the master branch, execute the following (with any appropriate branch name in quotes):

$ git checkout -b "feature-new-stuff"

Here, we defined the branch feature-new-stuff and will perform work there.

Perform Your Local Work

Follow the standard local repository workflow of file changes with git add . git commit steps for the files.

Push Changes to Your Downstream Remote Repository

When you are ready to push changes to your remote fork of the upstream repository, use the following:

$ git push origin feature-new-stuff

Your local and remote downstream repositories are now current with your local feature-new-stuff changes and this branch is current with the upstream repository changes as of the time of the merge step above.

0
0

Leave a Reply

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

%d bloggers like this: