Different default remote (tracking branch) for git pull and git push

branch, git

Solution

For Git 1.6.4 and later, set `remote.<name>.pushurl` with git config.

One might use this to pull using the read-only `https:` protocol and push using an ssh-based protocol.

Say `origin`'s url (`remote.origin.url`) is `https://git.example.com/some/repo.git`. It is read-only, but you have write access through the ssh-based ‘URL’ `git@git.example.com:some/repo.git`. Run the following command to effect pushing over the ssh-based protocol:

git config remote.origin.pushurl git@git.example.com:some/repo.git

Problem

Is there a way to set up a git repository, so that `git pull` defaults to one remote and `git push` defaults to another? I know I can set both by changing the value of the `remote` variable in branch section of `.git/config`, but how to do it for each direction separately?

Original source

Related problems