Last active
July 9, 2025 23:31
-
-
Save wilmarvh/95fe7daed6ee6a63d811677e040ae421 to your computer and use it in GitHub Desktop.
git checkout-all-branches
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#Whenever you clone a repo, you do not clone all of its branches by default. | |
#If you wish to do so, use the following script: | |
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master | grep -v main `; do | |
git branch --track ${branch#remotes/origin/} $branch | |
done |
it`s look like good. I will try it 🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙🤙
You probably want to add grep -v main
as well.
You probably want to add
grep -v main
as well.
Added, thanks!
Here is a slightly more verbose version that fixes some issues with the original...
- fetches refs so branches that exist on the remote but not locally are tracked
- works no matter what your default branch is named (i.e. not just main/master)
- works even if you have git configured to display branches in color
- won't display an error if branch already exists locally
git fetch
default_branch=$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')
for remote_branch in $(git branch --all --no-color | grep remotes | grep -v "${default_branch}"); do
branch="${remote_branch#remotes/origin/}"
git branch --track "${branch}" "${remote_branch}" 2>&1 | grep -v "already exists"
done
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It works like a charm! Thanks a lot!