Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you remove an invalid remote branch reference from Git?

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 
like image 223
cmcginty Avatar asked Jul 02 '09 02:07

cmcginty


People also ask

How do I force delete a remote branch?

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 .

How do I remove a remote from git?

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>.


2 Answers

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.


Advice Context

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

like image 152
Kent Fredric Avatar answered Sep 20 '22 15:09

Kent Fredric


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 
like image 20
Pawan Maheshwari Avatar answered Sep 23 '22 15:09

Pawan Maheshwari