Make an existing Git branch track a remote branch?
branch, git, git-branch
Solution
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:
- All of the above commands will cause local branch `foo` to track remote branch `foo` from remote `upstream`.
- The old (1.7.x) syntax is deprecated in favor of the new (1.8+) syntax. The new syntax is intended to be more intuitive and easier to remember.
- Defining an upstream branch will fail when run against newly-created remotes that have not already been fetched. In that case, run `git fetch upstream` beforehand.
See also: Why do I need to do `--set-upstream` all the time?
Problem
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 `.git/config` file, but it seems there should be an easier way.