Re: [Newbie] How to *actually* get rid of remote tracking branch?
- From
Steffen Prohaska <prohaska@zib.de>
- Date
- Nov 13, 2007, 17:16 UTC
- Message-ID
- <A919E788-C5D0-4404-95D4-869BAFE868AC@zib.de>
- In-Reply-To
- <200711131703.16357.jnareb@gmail.com>
On Nov 13, 2007, at 5:03 PM, Jakub Narebski wrote:
Show 47 quoted lines
> Sergei Organov <osv@javad.com> wrote: >> Jakub Narebski <jnareb@gmail.com> 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.
"git remote prune origin" should be used to clean up stale remote-tracking branches.
BTW, what's the right name for this type of branch. I found "tracking branch", "remote tracking branch", and "remote-tracking branch" in the manual. The glossary only mentions "tracking branch". Or is it a "tracked remote branch" as the output of "git remote show" suggests. I remember, there was a lengthy discussion on this issue. Does someone remember the conclusion?
> So I'm not sure if it is a bug, misfeature or a feature.
It doesn't make sense to delete remote-tracking branches locally if they are still present at the remote. The main purpose of a remote-tracking branch is to be identical to the real remote branch.
In my opinion its a misfeature. "git remote prune" does the same in a sane way.
Steffen