🧠 The Problem
When working on multiple local branches (say for different client tasks, features, or experiments), you often:
- Switch to a branch using git checkout
- Pull the latest changes using git pull
- Repeat this for every other branch
That’s fine for 2-3 branches. But what if you have 10, 20, or even 30?
“There has to be a better way.”
Spoiler: There is. ✅
🛠️ The Goal
We want to pull the latest changes from the remote for every local branch without manually checking each one out.
Let’s automate that!
🚀 Step-by-Step Solution
Here’s how to pull updates for all branches at once:
✅ Step 1: List All Local Branches
git branch
This gives you a list like:
  main
* feature/login
  bugfix/footer
  refactor/api
Great — but we want to loop through these branches.
🧪 Step 2: Loop Through Branches and Pull
Here’s a handy Bash script that does the job:
#!/bin/bash
current_branch=$(git rev-parse --abbrev-ref HEAD)
for branch in $(git for-each-ref --format='%(refname:short)' refs/heads/); do
  echo "🔄 Checking out $branch..."
  git checkout "$branch" > /dev/null 2>&1
  echo "⬇️ Pulling latest changes for $branch..."
  git pull --rebase
  echo "✅ Done with $branch"
  echo "-------------------------"
done
# Switch back to original branch
git checkout "$current_branch" > /dev/null 2>&1
echo "🚀 All done! Back on $current_branch"
Save this script as
git-pull-all.shand make it executable:
chmod +x git-pull-all.sh
Run it with:
./git-pull-all.sh
🧠 A Few Notes
- The script uses --rebaseinstead of a plainpullto keep history clean. You can remove it if you prefer merge commits.
- Works best if all branches are tracking remote ones (e.g. origin/main,origin/feature/loginetc.).
- If you use authentication (like SSH keys or PATs), make sure you're authenticated before running the script.
 
 
              
 
    
Top comments (0)