Reputation: 5406
The command git branch -a
lists a bunch of branches that are NOT on the repository, and NOT local branches. How can these be deleted?
* develop
master
remotes/origin/cloner
For example, remotes/origin/cloner
used to exist in the repo, but it has since been deleted and I'd like it not to appear when typing git branch -a
.
Upvotes: 21
Views: 5137
Reputation: 578
If you want to keep main
and develop
branch and delete all local branch from git repository then this might be helpful.
Delete all local branch except main and develop:
git branch -a | egrep -v "(^\*|main|develop)" | xargs git branch -d
Upvotes: 0
Reputation: 41491
If you have remote-tracking branches (such as origin/cloner
in this case) which are left over after the corresponding branch has been deleted in the remote repository, you can delete all such remote-tracking branches with:
git remote prune origin
The documentation for git remote
explains this as:
Deletes all stale remote-tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".
With
--dry-run
option, report what branches will be pruned, but do not actually prune them.
Upvotes: 30
Reputation: 4387
You also do
git push origin :cloner
To remove unwanted remote branches
Upvotes: 0
Reputation: 72696
To delete a branch which is not needed anymore you can use the following command :
git branch -d -r origin/cloner
Upvotes: 3
Reputation: 388
It may also happen that the remote repository reference has been deleted from the local clone, but still appears in the output of the 'git branch -a' command. In any case, you can always suppress any reference simply by deleting the corresponding files:
$ rm -f .git/refs/remotes/cloner
$ rm -rf .git/refs/remotes/deprecated_remote
Upvotes: -5