Subject: Re: [Newbie] How to *actually* get rid of remote tracking branch?

From: Sergei Organov <[email-masked]>
Date: Tue, 13 Nov 2007 20:40:24 +0300

Jakub Narebski <[email-masked]> writes:
> Sergei Organov <[email-masked]> wrote:
>> Jakub Narebski <[email-masked]> writes:
>>> Sergei Organov wrote:
>
>>>> I want to get rid of origin/pu remote tracking branch. What do I do?
>>>> I RTFM git-branch. What does it suggest?
>>>> 
>>>> git branch -d -r origin/pu
>>>> 
>>>> So far so good. However, it doesn't seem to work in practice:
> [...]
>>>> $ git branch -d -r origin/pu
>>>> Deleted remote branch origin/pu.
>>>> $ git remote show origin
>>>> * remote origin
>>>>   URL: git://git.kernel.org/pub/scm/git/git.git
>>>>   Remote branch(es) merged with 'git pull' while on branch master
>>>>     master
>>>>   New remote branches (next fetch will store in remotes/origin)
>>>>     pu
>>>>   ^^^^^^^^^^^^^^^^^^^ What???  
>>>>   Tracked remote branches
>>>>     html maint man master next todo
>>>
>>> Check out what do you have in .git/config file, in the
>>> [remote "origin"] section. Most probably (if you cloned this
>>> repository using new enough git) you have wildcard refspec there,
>>> which means that git would pick all new branches when
>>> fetching / pulling from given repository. 
>> 
>> Sure, I've cloned git.git using rather recent git, so .git/config has:
>> 
>>       fetch = +refs/heads/*:refs/remotes/origin/*
>
> [...] 
>> Isn't "git branch -d -r" supposed to do whatever magic is required to
>> get rid of the remote branch? Currently it seems like a bug introduced
>> by addition of wildcards refspecs, right?
>
> No, the '-r' part translates 'pu' into 'refs/remotes/origin/pu', and
> the '-d' option removes branch locally. It is meant I think to remove 
> tracking of branches which were dropped in remote, as I think that 
> wildcard refspec does create new branches, but do not delete dropped 
> branches.

Isn't it 'git remote prune <name>' that is meant to remove tracking of
branches which were dropped in remote?

Anyway, description of '-r' in man git-branch:

-r::
	List or delete (if used with -d) the remote-tracking branches.

Suggests it should be deleted. What's a point to delete it if it will be
re-created on next fetch anyway?

> So I'm not sure if it is a bug, misfeature or a feature.
>
> Can anyone better versed in wildcard refspecs speak up, please?

Yes, please!

-- 
Sergei.