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

Dre*_*nai 60 github visual-studio visual-studio-code

在VSCode中,在我执行拉取请求并删除GitHub上的分支后,该分支仍然显示在Visual Studio代码中.如果我选择分支,它会按预期给出错误.

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

更新:2019年2月

列出并删除多个分支

与此同时__CODE__,这是我用于的另一个分支删除相关命令__CODE__:

示例 - 列出以.开头的所有分支 __CODE__

__PRE__

列表删除.注意:更换__CODE____CODE__删除没有警告

__PRE__

dav*_*000 99

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

git fetch --prune
Run Code Online (Sandbox Code Playgroud)

然后重新启动visual studio以从命令选项板中删除分支

  • 这只是为了删除远程分支。要删除本地分支,您可以执行`gitbranch | xargs git 分支 -d`. 或者如果您想删除未合并的内容,请使用“-D”。 (10认同)
  • @Brian,这不会删除你拥有的任何本地分支.此命令从VSCode上的快速切换git菜单中删除`origin/branch_name`.例如,如果你有一个本地分支`test`并将它推送到Github,那么在git branch菜单上有两个分支`test`和`origin/test`,prune只删除`origin/test`分支,不是`test`分支. (5认同)
  • 这个命令不起作用。在执行命令`git branch` 或单击分支名称以查看包含所有可用分支的下拉列表时,我仍然可以看到列表中的所有分支 (3认同)
  • 无需重新启动 VS Code,只需点击“源代码管理”菜单中的“刷新”按钮即可 (2认同)
  • 要在 VS Code 中运行此命令,请使用“Ctrl+Shift+P”并输入“Git: Fetch (Prune)”,它应该执行相同的操作。 (2认同)
  • 为什么这个答案有 300 票赞成? (2认同)

小智 41

通过打开Command Pallete(Ctrl-Shift-P)然后选择Git:Delete Branch ...,可以从Visual Studio Code中删除本地分支,然后可以通过从列表中选择适当的分支来删除本地分支.

  • 还没有测试过,但它似乎只显示本地分支,所以它应该按描述工作。 (2认同)
  • @TylerBell正如他已经说过的,这是删除本地分支而不是远程分支的方法。 (2认同)
  • 这应该就是答案。我不知道为什么我自己这么愚蠢,连这一点都不知道。谢谢@matthew-disney-cook (2认同)

Krz*_*lak 12

从GitHub中删除的分支很好......刚从GitHub中删除.您的计算机上仍有本地分支副本.删除本地分支运行git branch -d the_local_branch.VS Code中没有命令可以执行此操作,但您可以使用View: Toggle Integrated Terminal命令和运行命令在VSCode中启动终端.

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


Bas*_*hir 9

在较新版本的 Visual Studio 2019(例如 16.8.6)中,您需要转到设置并找到 git 设置,如下所示: 在此输入图像描述

  • 仅供参考 - 这个答案适用于 Visual Studio,而不是 Visual Studio Code。同样的问题[在这里询问 Visual Studio](/sf/answers/3107466281/) (5认同)

Bog*_*aru 8

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

git remote prune origin
Run Code Online (Sandbox Code Playgroud)

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

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

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

{ "label": "Git Prune", "type": "shell", "command": "git remote prune origin", "problemMatcher": [] }

如何使用它:

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

参考:

  1. Git 修剪


tgr*_*r42 6

打开命令面板(Ctrl + Shift + P)并选择Git:提取(修剪)

功能已于2018年11月20日合并到VS Code中。

  • 是的,你可以设置 `git.pruneOnFetch: true` (7认同)
  • 还是不行 (4认同)
  • 有没有办法让 git pull 在 vscode 中的默认行为? (3认同)

dav*_*000 5

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

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

git remote remove origin
Run Code Online (Sandbox Code Playgroud)

然后

git remote add origin git@github.com:your-username/repo-name.git
Run Code Online (Sandbox Code Playgroud)


Dar*_*n G 5

I interpreted the question to be: how can I delete my local branches that have been merged, since I've been using Git Fetch (Prune) from the command palette. This may be considered a "hack", but it's what I use. In the PowerShell terminal:

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

In case you're not familiar with PoSH, here's what that does: the first line gets the name of all merged branches (with the exception of develop and master), and the second line loops through that list and runs "git branch -d". As long as the branch is merged completely, you should see:

Deleted branch <branch name> (was <commit ID>).
Run Code Online (Sandbox Code Playgroud)

for each branch. Occasionally I'll run into a branch that fails to be deleted - if this happens, and you're sure that it's safe to be deleted (i.e. you won't lose local work that hasn't been stored), you can run:

git branch <branch name> -D
Run Code Online (Sandbox Code Playgroud)

Note the capital D - that forcibly deletes the local branch.

  • 天才和疯狂之间只有一线之隔。这与那条线相去甚远,在精神错乱方面。 (2认同)

Adr*_*aud 5

您可以使用以下命令删除所有本地分支(主分支除外):

git branch -r | grep -v "master" | xargs git branch -D
Run Code Online (Sandbox Code Playgroud)

您可以删除所有仍然出现origin/XXXX在 VSCode 中但已删除的分支origin

git fetch --prune
Run Code Online (Sandbox Code Playgroud)

笔记:

上面的第一个命令(取自/sf/answers/3640438931/):

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

  • 我添加了一个解释@Drenai (2认同)

Von*_*onC 5

您不必再git fetch --prune重新启动 VSCode。
使用 VSCode 1.52(2020 年 11 月),您现在拥有:

Git:在获取时修剪

启用该git.pruneOnFetch设置将使 VS Codegit fetch --prune在获取远程引用时运行。

一旦从 GitHub 中删除它们,本地就不再有额外的分支。

参见PR 89249,修复问题 86813

用法:

{
   "git.pruneOnFetch": true
}
Run Code Online (Sandbox Code Playgroud)

设置为false默认。

这会将--prune标志添加到所有 git fetches。

  • 我打开此设置,单击“拉、推/取(修剪)”,但我仍然看到所有没有远程的本地分支:( (3认同)
  • @ekkis [`git prune`](/sf/answers/2525854691/) 将删除您的本地“远程跟踪分支”,而不是您的本地分支。如果远程存储库中不再存在“xxx”,它将删除“origin/xxx”。 (2认同)

归档时间:

查看次数:

34686 次

最近记录:

5 年,11 月 前