Getting existing git branches to track remote branches

Solution 1:

Use the set-upstream arg:

git branch --set-upstream local-branch-name origin/remote-branch-name

Running the above command updates your .git/config file correctly and even verifies with this output:

"Branch local-branch-name set up to track remote branch remote-branch-name from origin."

EDIT: As martijn said: "In version Git v1.8.0, --set-upstream is deprecated. Use --set-upstream-to instead."

git branch --set-upstream-to local-branch-name origin/remote-branch-name

See this for more information.

Solution 2:

git help remote should show you what you need to know. I think what you want is

git remote add [remote-name] [remote-url]

# Set a local branch to follow the remote
git config branch.[branch-name].remote [remote-name]

# Set it to automatically merge with a specific remote branch when you pull
git config branch.[branch-name].merge [remote-master]

You can also manually edit .git/config to set these up.

Solution 3:

You can also use this if you want to create a new local branch to track a remote branch:

git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name] 

or even better:

git checkout -t origin/branch_name

Solution 4:

On newer versions of git you can use

git branch --track origin/branch_name

Solution 5:

The --set-upstream flag is deprecated and will be removed.

git branch master --set-upstream-to myupstream/master