Git Add Another Remote to an Existing Repository

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

This article describes the procedure of adding a second remote to an existing repository. A practical situation when we would need something like this is when we developed an an application in an internal repository - for example a Gogs instance deployed within an OpenShift cluster - and we want to share the example in GitHub, while maintaining the internal repository fully operable. We start from a local repository fully synchronized with the Gogs repository:

git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
git remote -v show
origin	https://gogs-cicd.apps.openshift.novaordis.io/gogs/novaordis-session-servlet.git (fetch)
origin	https://gogs-cicd.apps.openshift.novaordis.io/gogs/novaordis-session-servlet.git (push)

Procedure

Create the Second Repository

Use GitHub's UI. For consistency, use the same repository name, though it is not necessary.

=Add the Second Remote

From the local repository, add the GitHub remote:

git remote add github git@github.com:NovaOrdis/novaordis-session-servlet.git

The remote is immediately added:

git remote -v show
github	git@github.com:NovaOrdis/novaordis-session-servlet.git (fetch)
github	git@github.com:NovaOrdis/novaordis-session-servlet.git (push)
origin	https://gogs-cicd.apps.openshift.novaordis.io/gogs/novaordis-session-servlet.git (fetch)
origin	https://gogs-cicd.apps.openshift.novaordis.io/gogs/novaordis-session-servlet.git (push)

and .git/config is updated accordingly

...
[remote "github"]
       url = git@github.com:NovaOrdis/novaordis-session-servlet.git
       fetch = +refs/heads/*:refs/remotes/github/*