How do I list all remote branches in Git 1.7+?
Categories:
Mastering Git: How to List All Remote Branches (Git 1.7+)

Learn the essential Git commands to effectively view and manage all remote branches in your repository, ensuring you stay synchronized with your team's work.
Working with Git often involves collaborating with others, which means interacting with remote repositories and their branches. Understanding how to list all remote branches is a fundamental skill for any Git user. This article will guide you through the various commands available in Git 1.7 and later versions to inspect your remote branches, helping you keep track of your team's progress and manage your local environment effectively.
Understanding Remote Branches
Before diving into the commands, it's crucial to understand what a remote branch is. A remote branch is a reference to the state of branches in a remote repository. When you clone a repository, Git automatically sets up a remote named origin
(by default) that points to the repository you cloned from. Remote-tracking branches (e.g., origin/main
, origin/feature-x
) are local copies of these remote branches. They are read-only and serve as bookmarks to the last known state of the remote repository.
graph TD A[Local Repository] --> B(git fetch origin) B --> C{Remote Tracking Branches} C --> D[origin/main] C --> E[origin/feature-x] F[Remote Repository] --> G(main) F --> H(feature-x) G -- Synchronizes with --> D H -- Synchronizes with --> E
Relationship between Local, Remote-Tracking, and Remote Branches
Listing All Remote Branches
Git provides several commands to list remote branches, each with slightly different output and use cases. The primary command you'll use is git branch
with specific flags. It's important to note that these commands show you the remote-tracking branches in your local repository, which reflect the state of the remote the last time you ran git fetch
or git pull
.
git fetch origin
(or your remote's name) before listing remote branches to ensure your local remote-tracking branches are up-to-date with the actual remote repository.List All Branches (Local & Remote)
git branch -a
This command lists all local branches and all remote-tracking branches. Remote-tracking branches are typically prefixed with remotes/
(e.g., remotes/origin/main
).
List Only Remote Branches
git branch -r
This command specifically lists only the remote-tracking branches. This is often the most direct way to see what's available on the remote.
List Remote Branches Verbose
git branch -rv
Adding the -v
(verbose) flag to -r
will show the SHA-1 hash and subject line of the tip commit for each remote-tracking branch, providing more detail.
Inspecting Remote Branches with git remote show
While git branch -r
gives you a list of remote-tracking branches, git remote show <remote-name>
provides a more comprehensive overview of a specific remote. This command not only lists its branches but also shows which local branches are tracking which remote branches, and what happens on git push
and git pull
.
git remote show origin
Example output of git remote show origin
The output of git remote show origin
will include a section like this:
* remote origin
Fetch URL: https://github.com/user/repo.git
Push URL: https://github.com/user/repo.git
HEAD branch: main
Remote branches:
main tracked
feature-x tracked
develop tracked
Local branches configured for 'git pull':
main merges with remote main
Local branches configured for 'git push':
main pushes to main (up to date)
This provides a detailed summary, including all remote branches that are being tracked.
Cleaning Up Stale Remote-Tracking Branches
Sometimes, remote branches are deleted from the remote repository, but their corresponding remote-tracking branches (e.g., origin/old-feature
) might still exist in your local repository. These are called 'stale' branches. You can clean them up to keep your local repository tidy.
1. Fetch and Prune
The safest way to remove stale remote-tracking branches is to use git fetch
with the --prune
(or -p
) option. This command will fetch new changes and then remove any remote-tracking branches that no longer exist on the remote.
2. Verify Cleanup
After running git fetch --prune
, you can use git branch -r
again to verify that the stale branches have been removed from your list of remote-tracking branches.
git fetch --prune origin
# Or the shorter version:
git fetch -p origin
Command to fetch and prune stale remote-tracking branches