VS Code分支切换(工作树更新后)

编程语言 2026-07-09

TL;DR: VS Code的 Git: Checkout to... 命令曾经让我直接选择一个分支或标签。现在它先强制让我选择一个仓库,然后才是分支。 在此输入图片描述

在此输入图片描述

在此输入图片描述

有没有办法恢复旧的行为(直接访问 Select a branch or tag to checkout)? 或者,完全禁用引入的工作树支持

目标:通过键绑定快捷方式轻松切换分支)


我多年来一直在使用 Git工作树,但自从VS Code增加了内置支持之后,反而在我的工作流中带来了UI混乱和摩擦。此时我不确定是我误解了这个特性,还是VS Code的工作树支持只是在阻碍我工作。

在Bazzite DX(Developer eXperience)上使用VS Code 1.118.1版本。

(在我的工作机上:Windows 10,VS Code 1.105.1,设置已同步——仍按预期工作)

我尝试过的做法

回滚VS Code(暂时有帮助,但扩展再次强制我更新)

禁用: Git: Detect Worktrees 将Git: Detect Worktrees Limit设置为0

这段时间有用,但几天前问题又出现。


更新(基于 此回答

  • 运行git worktree prune → 无效
  • 添加:"git.repositoryScanIgnoredFolders": ["**/.worktrees/**"](当然按我的路线添加,也额外添加了以逗号分隔的 "*" 和 "**" 以增强效果)。这看起来很有希望,因为选择器显示的是仓库而不是工作树(正如有人指出的),但实际并没有改变任何东西。

还尝试了:

"git.openRepositoryInParentFolders": "never", "git.repositoryScanMaxDepth": 0"git.autoRepositoryDetection": false

所有更改都应用在用户设置层级,而工作区设置在所有仓库中都被删除。重启VS Code,甚至重启整机以确保生效

仍然无效。

解决方案

"The Choose a repository" picker shows up because VS Code detects your worktrees as separate repos, even with git.detectWorktrees: false.

请按顺序尝试两件事:

首先,清理孤儿工作树:

git worktree list
git worktree prune

重启VS Code。这在大多数情况下能解决问题。

如果还不够,请将以下内容添加到你的 settings.json(通常人们忽略的是第三行):

{
  "git.detectWorktrees": false,
  "git.detectWorktreesLimit": 0,
  "git.repositoryScanIgnoredFolders": ["**/.worktrees/**"]
}

关于快捷键: 有内置命令无法完全复刻状态栏的点击效果。你可以在 keybindings.json 中手动绑定 git.checkout,它直接定位到活动的仓库并跳过选择器,只要窗口中只打开一个文件夹。

众所周知的bug,你并不孤单。Issue #278774 一直在请求将 detectWorktrees 默认设为 false 已有一段时间了。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章