How can I pull/push from multiple remote locations?

Issue

The short: is there a way to have a git repo push to and pull from a list of remote repos (rather than a single “origin”)?

The long: I often have a situation when I’m developing an app in multiple computers, with different connectivity – say a laptop while on transit, a computer “A” while I’m in a certain location, and another computer “B” while on another. Also, the laptop might have connectivity with only either “A” or “B”, and sometimes both.

What I would like to is for git to always “pull” from and “push” to all the computers it can currently connect to, so it’s easier to jump from one machine to the other and continue working seamlessly.

Solution

You can configure multiple remote repositories with the git remote command:

git remote add alt alt-machine:/path/to/repo

To fetch from all the configured remotes and update tracking branches, but not merge into HEAD, do:

git remote update

If it’s not currently connected to one of the remotes, it will take time out or throw an error, and go on to the next. You’ll have to manually merge from the fetched repositories, or cherry-pick, depending on how you want to organize collecting changes.

To fetch the master branch from alt and pull it into your current head, do:

git pull alt master

So in fact git pull is almost shorthand for git pull origin HEAD (actually it looks in the config file to determine this, but you get the idea).

For pushing updates, you have to do that to each repo manually.
A push was, I think, designed with the central-repository workflow in mind.

Answered By – araqnid

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published