Search code examples
gitbranchgit-branch

Make an existing Git branch track a remote branch?


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.


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?