gitbranch

How to download a branch with git?


I have a project hosted on GitHub. I created a branch on one computer, then pushed my changes to GitHub with:

git push origin branch-name

Now I am on a different computer, and I want to download that branch. So I tried:

git pull origin branch-name

...but all this did was overwrite my master branch with the changes in my new branch.

What do I need to do to properly pull my remote branch, without overwriting existing branches?


Solution

  • Thanks to a related question, I found out that I need to "checkout" the remote branch as a new local branch, and specify a new local branch name.

    git checkout -b newlocalbranchname origin/branch-name
    

    Or you can do:

    git checkout -t origin/branch-name
    

    The latter will create a branch that is also set to track the remote branch.


    Update: It's been 5 years since I originally posted this question. I've learned a lot and git has improved since then. My usual workflow is a little different now.

    If I want to fetch the remote branches, I simply run:

    git pull
    

    This will fetch all of the remote branches and merge the current branch. It will display an output that looks something like this:

    From github.com:andrewhavens/example-project
       dbd07ad..4316d29  master     -> origin/master
     * [new branch]      production -> origin/production
     * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
    First, rewinding head to replay your work on top of it...
    Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.
    

    Now git knows about my new my-bugfix-branch. To switch to this branch, I can simply run:

    git checkout my-bugfix-branch
    

    Normally, I would need to create the branch before I could check it out, but in newer versions of git, it's smart enough to know that you want to checkout a local copy of this remote branch.