【发布时间】:2021-06-21 12:41:57
【问题描述】:
跟进'<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 worktree prune。 -
谢谢,但我在发帖之前尝试过
git worktree prune。即,它对上述情况没有帮助。 -
嗯,这表明 VS 正在执行
git worktree lock。最新的 Git(现在是 2.31)可能正在进行改进,以使git worktree list显示有关它知道(或认为它知道)的工作树集的更多信息,这可能会有所帮助。不过目前还不确定这是什么状态。 -
感谢 torek,我之前确实查过并尝试过
git worktree list,但我丢失了输出(由于我的 Windows 机器被强制重启),但我认为不匹配并没有什么特别之处工作树,否则我会注意到并单独询问那条路线。不过我可能是错的(或者我的 git 不够新)。感谢您提供的信息,希望对下一个受害者有所帮助。 -
我的问题是您如何设法更改您的一个工作树以检查您已经在另一个工作树中签出的分支。换句话说,当在
/path/release-a中签出release-b时,为什么that 命令没有得到同样的错误信息?基本上,你不应该陷入这种境地。
标签: git git-branch git-worktree