I know how to make a new branch that tracks remote branches, but how do I make an existing branch track a remote branch?
I know I can just edit the
You can do the following (assuming you are checked out on master and want to push to a remote branch master):
Set up the 'remote' if you don't have it already
git remote add origin ssh://...
Now configure master to know to track:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
And push:
git push origin master
In very short
git branch --set-upstream yourLocalBranchName origin/develop
This will make your yourLocalBranchName track the remote branch called develop.
Given a branch foo and a remote upstream:
As of Git 1.8.0:
git branch -u upstream/foo
Or, if local branch foo is not the current branch:
git branch -u upstream/foo foo
Or, if you like to type longer commands, these are equivalent to the above two:
git branch --set-upstream-to=upstream/foo
git branch --set-upstream-to=upstream/foo foo
As of Git 1.7.0 (before 1.8.0):
git branch --set-upstream foo upstream/foo
Notes:
foo to track remote branch foo from remote upstream.git fetch upstream beforehand.See also: Why do I need to do `--set-upstream` all the time?
Here, using github and git version 2.1.4, just do:
$ git clone git@github.com:user/repo.git
And remotes come by itelsef, even if not linked locally:
$ git remote show origin
* remote origin
Fetch URL: git@github.com:user/repo.git
Push URL: git@github.com:user/repo.git
HEAD branch: master
Remote branches:
develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
But of course, still no local branch:
$ git branch
* master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
See? Now if you just checkout develp, it will do the magic automatically:
$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
So easy!
Summary. Just run this 2 commands:
$ git clone git@github.com:user/repo.git
$ git checkout develop