问题描述
跟进'<Branch>' is already checked out at '</other/location>' in git worktrees
当我的分支和工作树不匹配时,我收到“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
以外的任何更好的方法。
解决方法
嗯,如果布局如您所描述的那样,您应该能够在 git switch release-a
内 /path/release-a
。您的问题是否反映了 git worktree list
的输出,或者您在 MSVS 中看到的内容?
如果 .git
元数据混乱,您可以在两个工作树中创建虚拟分支(git checkout -b dummy-x
、dummy-y
等),然后在每个工作树中创建 git switch release-...
。如果工作树中有未保存的工作,则根据需要提交/存储。
如果 MSVS 将元数据存储在别处,那是一个不同的问题,大概只能在 MSVS 中解决。