0

跟进'<Branch>' 已在 git worktrees 中的 '</other/location>' 签出

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

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

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

  • /path/master对应我的 gitmaster分支
  • /path/release-a对应我的 gitrelease-a分支
  • /path/release-b对应我的 gitrelease-b分支

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

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

现在我无法在 MS VS 中将其改回。尝试在工作树中切换分支会让我:

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

除了git worktree remove请,还有什么更好的方法。

4

1 回答 1

2

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

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

如果 MSVS 将元数据存储在其他地方,这是一个不同的问题,大概只能在 MSVS 中解决。

于 2021-03-30T04:06:26.127 回答