Search code examples
gitbranchgit-branchgit-fetch

`git fetch` a remote branch


The remote repository contains various branches such as origin/daves_branch:

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/master

How do I switch to daves_branch in the local repository so that it tracks origin/daves_branch?

I tried:

$ git fetch origin daves_branch
$ git checkout daves_branch

Solution

  • Update: Using Git Switch

    All of the information written below was accurate, but a new command, git switch has been added that simplifies the effort.

    If daves_branch exists on the remote repository, but not on your local branch, you can simply type:

    git switch daves_branch
    

    Since you do not have the branch locally, this will automatically make switch look on the remote repo. It will then also automatically set up remote branch tracking.

    Note that if daves_branch doesn't exist locally you'll need to git fetch first before using switch.


    Original Post

    You need to create a local branch that tracks a remote branch. The following command will create a local branch named daves_branch, tracking the remote branch origin/daves_branch. When you push your changes the remote branch will be updated.

    For most recent versions of Git:

    git checkout --track origin/daves_branch
    

    --track is shorthand for git checkout -b [branch] [remotename]/[branch] where [remotename] is origin in this case and [branch] is twice the same, daves_branch in this case.

    For Git 1.5.6.5 you needed this:

    git checkout --track -b daves_branch origin/daves_branch
    

    For Git 1.7.2.3 and higher, this is enough (it might have started earlier, but this is the earliest confirmation I could find quickly):

    git checkout daves_branch
    

    Note that with recent Git versions, this command will not create a local branch and will put you in a 'detached HEAD' state. If you want a local branch, use the --track option.

    Full details are here: 3.5 Git Branching - Remote Branches, Tracking Branches