39

I have noticed TortoiseGit seems to contain every feature branch I ever created, both in drop-downs for local branches AND remote, even though many of the remote branches were deleted after being merged into master.

Is there a way in TortoiseGit to synhronise which branches are listed to those actually existing?

And a slight tangent... in terms of Git itself is a local version of a branch considered totally decoupled from the remote? i.e. there is no reason why deleting the remote version should automatically mean the local one is deleted?

Mr. Boy
  • 60,845
  • 93
  • 320
  • 589

5 Answers5

36

You can do, as mentioned in issue 1139, a Fetch with prune.
Or remove Remote Branch from list in Pull issue 2765.

That will clean-up any remote branches still locally referenced, while they are already deleted in the upstream repo.

http://wiki.typo3.org/wiki/images/1/18/Tortoisegit_fetch.gif

in terms of Git itself is a local version of a branch considered totally decoupled from the remote?

It can be.
If a branch has an remote tracking branch associated to it, git branch -vv can show it.

But removing said remote tracking branch has no bearing on the local branch.

i.e. there is no reason why deleting the remote version should automatically mean the local one is deleted?

Sure: you pushed by mistake a 'test' branch:

  • you want to delete it on the remote repo
  • but you very much want to keep it on your local repo to pursue some local tests you have no intention of pushing.
Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
5

There's now** an option in the 'Sync' dialog (under the 'Pull' list) to clean up stale remote branches:

enter image description here

This does exactly what you want for the remote branches in a single click!

To clean up local branches, you still need to delete them individually: if you click on the '...' button next to the 'Local Branch' pulldown menu from the 'Sync' dialog, you'll get a full list, where you can select branches and just hit 'delete'. (It'll ask for confirmation.)

**Added in 2012 with edec66b1 from Issue 1139. I guess nobody noticed!

Lucian
  • 461
  • 5
  • 6
3

You can delete the local branches from pull window.

Steps-

  1. Open pull window. (Right click in project directory, select TortoiseGit -> Pull )
  2. Select Remote Branch dropdown and use keyboard arrow keys to select the branch you want to delete.
  3. Once branch is selected, press shift + delete button in Windows OS(not sure about mac, you need to find some combination for it).

Step 2 - Image for selecting the branch from Remote Branch list:

Step 2- Image for selecting the branch from Remote Branch list

KazikM
  • 1,257
  • 5
  • 21
  • 29
Aamir Khan
  • 31
  • 3
1

To the last question, I believe that's an aspect of being "distributed". While local repo and remote repo may share contents to each other, they exist independently.

In practice this design may prevent trouble. If fetch completely reflects changes of "local branch in remote repo" to "remote branch in local repo", and someone removed a branch in remote repo, we will lose one local pointer of some commit (maybe the last one).

Jokester
  • 5,501
  • 3
  • 31
  • 39
1

TortoiseGit synchronizing the branches listed to those actually existing is a feature request.

At least you can use Shift + Delete to remove the item you don't want: Open the dialog, open the combobox for the list of branches, in the expanded list position the mouse pointer on one entry and shift+delete it.

The items in Remote Branch drop list are cached by TortoiseGit. Max size is 25.

Next time you want to pull, the suggestion list will contain only the name of the current branch.

coz
  • 445
  • 8
  • 14
  • I tried everything. It seems that TGit caches the branches .... git fetch prune but TGit still showing branches that do not exist locally or remote and more than the 25 ... So do I always have to "delete" (=remove) that branches one by other (36 branches, 36 times right mouse click, select delete, confirm with yes .... – hfrmobile Apr 22 '20 at 10:51