Fetch and pull all branches in Git

David Y.

The Problem

After cloning a Git repository that has many branches, I can only see a single branch in my local copy. How do I pull all branches from the remote repository and have them show up in the output of git branch?

The Solution

To create local equivalents of all branches in the remote repository, we can run the following bash for loop:

Click to Copy
for remotebranch in `git branch -r | grep -v HEAD`; do git branch --track ${remotebranch#origin/} $remotebranch done

This code loops through all branches in the remote repository and creates local equivalents for them. For example, when the script encounters origin/dev, it will create a local dev branch which tracks it (note the use of substitution syntax to remove origin/). These branches will now show up in the output of git branch and can be checked out, committed to, pulled and pushed.

If we only need to view the remote branches, and not work on them, we can use git fetch instead:

Click to Copy
git fetch --all

We will then be able to view the repository state at each of these branches in detached HEAD state by running git checkout origin/remote-branch-name.

If we only need to work on one or two remote branches, we can create and check out local versions of them manually using the following git checkout command:

Click to Copy
git checkout -b local-branch-name origin/remote-branch-name

Loved by over 4 million developers and more than 90,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Share on Twitter
Bookmark this page
Ask a questionJoin the discussion

Related Answers

A better experience for your users. An easier life for your developers.

    TwitterGitHubDribbbleLinkedinDiscord
© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.