This post will guide you how to work with git remotes and push to multiple repositories with a single command. If you don’t know what git is, you should probably read about it before you continue.
Prerequisites
Basic knowledge of the following git commands:
1
2
3
4
git init
git pull
git commit
git push
Have a write access to one or more remote git repositories
Defining multiple remotes
The first step is to add remote repos to your project
1
git remote add REMOTE-ID REMOTE-URL
Syntax to add a git remote
By convention, the original / primary remote repo is called origin. Here’s a real example:
1
git remote add origin git@github.com:komluk/repository.git
Add remote 1: GitHub
1
git remote add upstream git@devops.com:komluk/repository.git
Add remote 2: Azure DevOps
Change remote url
If you want to change the URL associated to a remote that you’ve already added, you can do it with the following command:
1
git remote set-url upstream git@github.com:komluk/repository2.git
List all remotes
To see a list of all remotes, simply use the following command:
1
2
3
4
5
git remote -v
origin git@github.com:komluk/repository.git (fetch)
origin git@github.com:komluk/repository.git (push)
upstream git@devops.com:komluk/repository.git (fetch)
upstream git@devops.com:komluk/repository.git (push)
Push to multiple remotes
Now we have a primary remote repo and other remotes as well, it’s time to configure the push. The objective is to push to multiple Git remotes with a single git push command.
1
git remote add all git@github.com:komluk/repository.git
Create a new remote called
allwith the URL of the primary repo.
1
git remote set-url --add --push all git@github.com:komluk/repository.git
Re-register the remote as a push URL.
1
git remote set-url --add --push all git@devops.com:komluk/repository.git
Add a push URL to a remote. This means that “git push” will also push to the second
gitrepository.
Now, we can push to all remote repositories with a single command!
1
git push --all BRANCH
Replace BRANCH with the name of the branch you want to push.
Pull from multiple remotes
It is not possible to git pull from multiple repos. However, you can git fetch from multiple repos with the following command:
1
2
git fetch --all
git checkout BRANCH
Checkout the branch you want to work with.
1
git merge remotes/upstream/main
Merge from remotes to main branch
1
git reset --hard REMOTE-ID/BRANCH
Reset the branch to match the state as on a specific remote.