Visual Studio Code-删除在GitHub上删除的仍在VS Code中显示的分支?


88

在VSCode中,我执行拉取请求并删除GitHub上的分支后,该分支仍显示在Visual Studio Code中。如果我选择分支,则将出现错误,如预期的那样。

如何从VSCode中删除这些现在已删除的分支-我可以自动做到吗?


2
要跟进(3年后),对我来说正确的答案是git fetch --prune更新/删除远程分支引用和git branch -d <branch-name>删除本地分支(-D强制)的组合。重启VSCode刷新调色板
Drenai

无需重新启动VS代码,正好砸在源代码控制菜单中的刷新按钮
AS

我实际上构建了一个函数来处理此问题,并写了一些有关它的文章。链接
大卫

Answers:


144

显然,此功能是有意的。我发现删除从Github中删除的所有远程分支的正确方法是运行以下命令。

git fetch --prune

然后重新启动Visual Studio以从命令面板中删除分支


6
@Brian,这不会删除您拥有的任何本地分支。此命令origin/branch_name从VSCode的快速切换git菜单中删除。例如,如果您有一个本地分支test并将其推送到Github,则有两个分支test,并且origin/test在git分支菜单上,修剪只会删除该origin/test分支,而不是该test分支。
davidhu

@Brian我发现,这将在VS Code重新启动后清除远程已删除的分支
David Wilton

该命令不起作用。在执行命令git branch或单击分支名称以查看包含所有可用分支的下拉列表后,我仍然看到列表中的所有分支
Anna Olshevskaia

@AnnaOlshevskaiagit branch仅列出本地分支,此命令应该删除这些remotes/branch_name分支。尝试git branch -a看一切。
davidhu

2
无需重新启动VS代码,正好砸在源代码控制菜单中的刷新按钮
AS

67

可以通过以下方法从Visual Studio Code中删除本地分支:打开命令面板(Ctrl-Shift-P),然后选择Git:Delete Branch ...,然后可以从列表中选择适当的分支来删除本地分支。


1
尚未通过测试,但它似乎仅显示本地分支,因此它应按描述的方式工作。
jave.web

2
@TylerBell正如他已经说过的,这是删除本地分支而不是远程分支的方法。
安比斯洛文(Annbuselvan Rocky)

2
这应该是答案。我不知道为什么我如此愚蠢,以至于我自己都不知道这一点。谢谢@ matthew-disney-cook
Serzhan Akhmetov

16

从GitHub删除的分支很好...只是从GitHub删除。您的计算机上仍具有分支的本地副本。要删除本地分支,请运行git branch -d the_local_branch。VS Code中没有命令可以这样做,但是您可以使用View: Toggle Integrated Terminalcommand在VSCode中启动终端并从中运行命令。

有关分支机构管理的更多信息,请访问git文档-https: //git-scm.com/book/be/v2/Git-Branching-Branch-Management


嘿,谢谢。是的,我目前使用git命令..但是希望vscode git sync会发现遥控器已删除它们-或突出显示它们。
猜不出来

很愚蠢的是,他们在git-command行中不支持本地git命令。设计不良。
史蒂文

也正在等待这里的扩展:)
Marko

1
请从@ matthew-disney-cook
Orangutech


9

我将问题解释为:由于我一直在命令面板中使用Git Fetch(Prune),因此如何删除已合并的本地分支。这可能被认为是“黑客”,但这是我所使用的。在PowerShell终端中:

$branches = (git branch --merged).replace(" ", "").replace("*", "") | ? { $_ -ne "develop" -and $_ -ne "master" }
foreach ($branch in $branches) { git branch $branch -d }

如果您不熟悉PoSH,可以执行以下操作:第一行获取所有合并分支的名称(develop和master除外),第二行遍历该列表并运行“ git branch -d ”。只要分支完全合并,您应该会看到:

Deleted branch <branch name> (was <commit ID>).

对于每个分支。有时,我会遇到无法删除的分支-如果发生这种情况,并且您确定可以安全删除它(即,您不会丢失尚未存储的本地工作),则可以运行:

git branch <branch name> -D

请注意大写字母D-强制删除本地分支。


那是一个疯狂的PowerShell命令😊我必须赞扬在您的
仓库

2
天才和精神错乱之间有一条细线。在精神错乱方面,这与那条线相去甚远。
达伦·G

1
不,这不对。这并不是说复杂,当你看着吧,反正,它只是从这里的答案PowerShell的翻译:stackoverflow.com/questions/6127328/...
斯科特斯塔福德

@ScottStafford对我来说,删除分支的170个字符的命令位于simple | complex分隔线的复杂一侧😉–
Drenai

6

您需要做的就是运行以下命令:

git remote prune origin

您可以做一些额外的事情,因为有时为此而烦恼的是打开一个终端。.您可以在vscode中添加一个任务。

为此,请按照以下步骤操作:

  1. 在VSCode视图>命令面板(cmd / ctrl + Shift + P)中
  2. 类型配置任务
  3. 选择从模板创建task.json文件,然后将在.vscode文件夹下创建一个新文件。
  4. 内部任务数组添加以下内容:

{“ label”:“ Git Prune”,“ type”:“ shell”,“ command”:“ git remote prune起源”,“ problemMatcher”:[]}

如何使用它:

  1. 打开命令面板
  2. 键入运行任务并选择它
  3. 选择Git Prune

参考:

  1. 金葱修剪

您知道git remote prune origin与接受的答案是否不同git fetch --prune?“运行任务”详细信息很棒,感谢您发布它
Drenai

@Drenai不,他们是一样的。但是要获得完整的答复,请在这里
Bogdan Alexandru Militaru '18

5

您可以使用以下方法删除所有本地分支(master除外):

git branch -r | grep -v "master" | xargs git branch -D

您可以删除所有仍显示为origin/XXXXVSCode的分支,但已经使用以下命令删除origin了:

git fetch --prune

注意:

上面的第一个命令(取自https://stackoverflow.com/a/52006270/3120163):

  • 列出所有分支
  • 从列表中删除master分支
  • 删除列表中的分支

如果您可以为第一个命令添加一个解释,那就太好了
Drenai

2
我添加了一个解释@Drenai
Adrien Renaud

4

我找到了解决此问题的方法。因此,您需要删除链接到Github存储库的遥控器,然后再次添加遥控器。

从Github删除的所有分支将不再显示在vscode中。假设这origin是远程仓库的名称。

git remote remove origin

然后

git remote add origin git@github.com:your-username/repo-name.git

1
从来没听说过。这是我发现将删除不再存在的远程分支的唯一方法。
davidhu

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.