VS Code分支切换(工作树更新后)
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 已有一段时间了。

