已删除的远程分支仍在TortoiseGit中列出

39

我注意到TortoiseGit似乎包含了我创建的每个特性分支,无论是在本地分支的下拉菜单中还是远程分支的下拉菜单中,即使许多远程分支在合并到主分支后被删除。

TortoiseGit是否有一种方法可以将列出的分支与实际存在的分支同步?

另外稍微偏题一点...就Git本身而言,本地分支的版本是否被视为完全脱离远程分支?也就是说,没有理由认为删除远程版本应该自动意味着删除本地版本?

5个回答

36
您可以根据 问题1139 中提到的方法,进行带修剪的获取。或者在拉取问题2765中从列表中删除远程分支。这将清除所有仍然被本地引用的远程分支,即使它们已经在上游存储库中被删除。 http://wiki.typo3.org/wiki/images/1/18/Tortoisegit_fetch.gif Git本身是否将分支的本地版本视为与远程完全分离? 它可能是这样的。如果一个分支有一个关联的远程跟踪分支,则git branch -vv 可以显示它。但是删除所述的远程跟踪分支对本地分支没有影响。
也就是说删除远程版本本身并不会自动意味着本地版本被删除。例如,您不小心推送了一个 'test' 分支,您想要在远程存储库中删除它,但是您非常想要保留它在本地存储库中进行一些测试,您没有意图推送。

5

现在,在“同步”对话框(在“Pull”列表下面)中有一个选项可以清理过时的远程分支:

enter image description here

这个功能可以在单击一次后立即完成远程分支所需的操作!

要清理本地分支,您仍然需要逐个删除它们:如果您在“同步”对话框中的“本地分支”下拉菜单旁边点击“...”按钮,则会获得完整列表,您可以选择分支并只需点击“删除”(它会要求确认)。

**该功能于2012年通过edec66b1Issue 1139添加。我猜没有人注意到!


3
您可以从拉取窗口中删除本地分支。
步骤如下:
  1. 打开拉取窗口。(在项目目录中右键单击,选择 TortoiseGit -> 拉取)
  2. 选择远程分支下拉菜单,并使用键盘箭头键选择要删除的分支。
  3. 一旦选择了分支,在Windows操作系统中按shift + delete按钮(不确定Mac是否适用,您需要寻找一些组合键)。
第2步 - 从远程分支列表中选择分支的图像:

选择远程分支列表中的分支的图像-第2步


1
TortoiseGit同步列出的分支和实际存在的分支是一个功能请求。你至少可以使用Shift + Delete删除不想要的项目:打开对话框,打开分支列表的组合框,在扩展列表中将鼠标指针定位在一个条目上,然后按shift+delete。远程分支下拉列表中的项目由TortoiseGit缓存。最大大小为25。下次您想要拉取时,建议列表将仅包含当前分支的名称。

我尝试了所有的方法。似乎TGit缓存了分支.... git fetch prune 但是TGit仍然显示本地或远程不存在的分支,并且超过25个...所以我总是需要一个一个地“删除”(=移除)这些分支(36个分支,36次右键单击,选择删除,确认是.... - hfrmobile

1
对于最后一个问题,我认为这是“分布式”的一个方面。虽然本地仓库和远程仓库可以相互共享内容,但它们存在独立。
在实践中,这种设计可能会防止麻烦。如果fetch完全反映了“远程仓库中的本地分支”到“本地仓库中的远程分支”的更改,并且有人删除了远程仓库中的一个分支,我们将失去某个提交的一个本地指针(也许是最后一个)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接