Git 更正分支和工作树不匹配

Git to correct branch and worktree mismatch

跟进 '<Branch>' is already checked out at '</other/location>' in git worktrees

当我的分支和工作树不匹配时,我收到“Branch is already checked out at different worktree”错误:

我现在必须使用 git worktree remove 删除我的 1.2T 工作树,但我想知道将来修复它的最佳方法是什么。

我的分支和工作树设置如下:

依此类推。多年来我一直都是这样,直到几天前我在 MS VS 中错误地 单击并更改了一个工作树分支 。现在我的分支和工作树是这样的:

  • /path/release-a 正在使用我的 git release-b 分支
  • /path/release-b 正在使用我的 git release-b 分支

现在我无法在 MS VS 中改回它。尝试在工作树中切换分支会得到我:

fatal: '<branch>' is already checked out at '</other/location>'

除了 git worktree remove 还有什么更好的方法吗?

嗯,如果布局如你所描述的,你应该可以 git switch release-a/path/release-a 之内。您的问题是否反映了 git worktree list 的输出或您在 MSVS 中看到的内容?

如果 .git 元数据混乱,您可以在两个工作树中创建虚拟分支(git checkout -b dummy-xdummy-y 等),然后在每个工作树中创建 git switch release-... .如果工作树中有未保存的工作,则根据需要提交/隐藏。

如果 MSVS 将元数据存储在别处,那是另一个问题,大概只能在 MSVS 中解决。