0

How do I reset my all local branches, one time to be just like the branches in the remote repository?

I have 42 branches in my local repository, but I have just 21 branches in my remote repository. I don't need the other branches, I just need the 21 branches (with same name in local and remote).

I know

git fetch origin 
git reset --hard origin/master

but I want all 21 branches to together reset hard to the state in origin, and all other branches deleted that are not in origin.

Martin Nyolt
  • 4,463
  • 3
  • 28
  • 36
Oscar
  • 5
  • 7

1 Answers1

3

You can use shell scripting if you are on Unix.

This will first delete all your local branches, and then create all branches from origin.

# make sure we are currently on no branch, so every branch can be deleted
git checkout --detach master

# delete all local branches
git branch | grep -v "HEAD detached" | xargs git branch -D

# re-create all branches from origin
while read b; do git branch ${b#origin/} $b; done < <(git branch -r | grep 'origin/')

# check out the new master
git checkout master
Martin Nyolt
  • 4,463
  • 3
  • 28
  • 36