How to clone all remote branches in git

Git, the widely-used distributed version control system, offers a variety of features that facilitate collaboration and code management. One such feature is the ability to work with branches, which are essentially pointers to different versions of your codebase. When working with remote repositories, you might often find the need to clone not just the main codebase but all its branches. In this Answer, we'll look into how you can achieve this.

Understanding Git clone

At its core, the git clone command is used to create a copy of a remote repository on your local machine. By default, this command only clones the main branch (usually master or main).

git clone <repository-url>

However, while this command fetches all branches, it only creates a local branch for the main one.

Fetching all branches

After cloning, navigate to the directory of the cloned repository:

cd <repository-name>

To fetch all branches from the remote, you can use:

git fetch --all

This command fetches all objects from the remote repository but doesn't create local branches for them.

Checking out remote branches locally

Even after fetching, you won't see remote branches listed when you run git branch. They are, however, visible with git branch -a, which shows all branches, including remote ones.

To create a local branch from a remote one:

git checkout -b local-branch-name origin/remote-branch-name

For instance, if there's a remote branch named feature-y, you'd use:

git checkout -b feature-y origin/feature-y

Automating the process

Manually checking out each one can be tedious if the repository has numerous branches. Here's a simple command to automate the process:

for branch in `git branch -r | grep -v HEAD`;do
git checkout -b $branch $branch
done

This command loops through each remote branch and creates a corresponding local branch.

Pushing changes

After making changes in any branch, you can push them back to the remote repository:

git push origin branch-name

Ensure you're on the correct branch and have the necessary permissions to push to the remote repository.

Keeping your branches updated

It's a good practice to regularly fetch the latest changes from the remote, especially if multiple collaborators are involved:

git pull origin branch-name

This command fetches the latest updates from the specified branch and merges them into your local branch.

Conclusion

Cloning all remote branches in Git is a straightforward process once you understand the relationship between local and remote branches. By leveraging the power of branches, developers can work on multiple features or fixes simultaneously, test them in isolation, and seamlessly integrate them when ready. Whether you're a solo developer or part of a large team, mastering branches will significantly enhance your Git proficiency and streamline your development workflow.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved