views:

40

answers:

1

I have moved an SVN repo to Git and probably due to a number of clonings, I'm now left with a bunch of branches that look like

BranchA
origin/BranchA
remotes/BranchA
remotes/origin/BranchA
remotes/origin/origin/BranchA

i.e. the same branch is listed a number of times. How can I clean this mess up. There are > 50 branches, some are not needed at all, and for the rest I'd be happy with just having them once.

EDIT:

This is what git remote show origin looks like for a certain case:

Remote branches:
BranchA tracked
origin/BranchA tracked

...

Local branches configured for 'git pull':
origin/BranchA merges with remote BranchA

...

Local refs configured for 'git push':
BranchA pushes to BranchA (up to date)
origin/BranchA pushes to origin/BranchA (up to date)
+1  A: 

You can remove these branches by using this command:

git push origin :branch_name

To remove the BranchA branch:

git push origin :BranchA

To remove the origin/BranchA branch:

git push origin :origin/BranchA

Alternatively you could use git branch -dr BranchA and so on.

Remove every branch except BranchA and origin/BranchA. You may have deleted the origin remote, in which case you should remove the remotes remote and re-add it as the origin remote.

Ryan Bigg
Which ones should I remove? Let's say I want to keep one of the BranchA's, would it be remotes/BranchA?
Makis
@Makis: updated answer
Ryan Bigg
Thanks, I'll do this!
Makis
*git rm* works on files, not branches (neither local or “remote tracking”). The syntax of the arguments seems to indicate that you intended to write about using *git push* to delete branches out of the remote repository. The OP also has some number of local and “remote-tracking” branches to delete, too (`git branch -d` along with `git branch -dr` or `git remote prune`).
Chris Johnsen
@Chris Johnsen: you're right, I should have use `git push` or `git branch -dr`. I'll update the answer to reflect this now.
Ryan Bigg