In my current repo I have the following output:
$ git branch -a * master remotes/origin/master remotes/public/master
I want to delete remotes/public/master
from the branch list:
$ git branch -d remotes/public/master error: branch 'remotes/public/master' not found.
Also, the output of git remote
is strange, since it does not list public
:
$ git remote show origin
How can I delete 'remotes/public/master' from the branch list?
Update, tried the git push
command:
$ git push public :master fatal: 'public' does not appear to be a git repository fatal: The remote end hung up unexpectedly
Deleting remote branches To delete a remote branch, you can't use the git branch command. Instead, use the git push command with --delete flag, followed by the name of the branch you want to delete. You also need to specify the remote name ( origin in this case) after git push .
The git remote remove command removes a remote from a local repository. You can use the shorter git remote rm command too. The syntax for this command is: git remote rm <remote-url>.
You might be needing a cleanup:
git gc --prune=now
or you might be needing a prune:
git remote prune public
prune
Deletes all stale 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 no actually prune them.
However, it appears these should have been cleaned up earlier with
git remote rm public
rm
Remove the remote named <name>. All remote tracking branches and configuration settings for the remote are removed.
So it might be you hand-edited your config file and this did not occur, or you have privilege problems.
Maybe run that again and see what happens.
If you take a look in the revision logs, you'll note I suggested more "correct" techniques, which for whatever reason didn't want to work on their repository.
I suspected the OP had done something that left their tree in an inconsistent state that caused it to behave a bit strangely, and git gc
was required to fix up the left behind cruft.
Usually git branch -rd origin/badbranch
is sufficient for nuking a local tracking branch , or git push origin :badbranch
for nuking a remote branch, and usually you will never need to call git gc
All you need to do is
git fetch -p
It'll remove all your local branches which are remotely deleted.
If you are on git 1.8.5+ you can set this automatically
git config fetch.prune true
or
git config --global fetch.prune true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With