'<Branch>'已经在git worktrees的'</ other/location>'中检出

Har*_*ren 24 git git-worktree

我开始使用git worktrees.它似乎工作,但我在尝试检出克隆的工作树中的分支时遇到此错误:

fatal: '<branch>' is already checked out at '</other/location>'
Run Code Online (Sandbox Code Playgroud)

如何在不删除.git/worktrees目录的情况下解决这个问题?

tor*_*rek 23

Git不会让你两次检查同一个分支,因为如果你这样做,然后去两个工作树中的一个并做一个新的提交,当你回到另一个时,你会让自己陷入痛苦之中工作树.

如果您实际上已经删除了其他工作树,只需运行git worktree prune以使Git意识到这一点.如果你还没有真正删除其他工作树,请不要检查两次:这没什么好玩的.

  • 我仍然会说“不要这样做”。您可以得到相同的效果而没有风险:签出一个新分支,该分支指向与现有工作树相同的提交。在新分支上进行新提交,然后将新分支以旧名称推送到上游服务器:`git push &lt;remote&gt; &lt;newbranch&gt;:&lt;oldname&gt;`。现在,您可以`git fetch &amp;&amp; git merge --ff-only`(或任何类似或等同的东西)来拾取其他工作树中的更改。 (3认同)

Qia*_*ian 19

如果您在手册中搜索“worktree”,git-checkout(1)您会发现

git checkout --ignore-other-worktrees <branch>
Run Code Online (Sandbox Code Playgroud)

但是您可能只想执行以下操作,因此当您移动(提交)一个工作树中的分支时,另一工作树的 HEAD 不会移动。

git checkout --detach <branch>
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 7

\n

如何在不删除的情况下解决这个问题.git/worktrees目录的情况下解决这个问题?

\n
\n

您将更轻松地使用 Git 2.17+(2018 年第 2 季度),因为“ git worktree”已经学会了 \' move\' 和 \'remove \' 子命令。

\n

请参阅Eric Sunshine ( )的提交 7f19def(2018 年 3 月 4 日)。\n请参阅提交 ee6763a提交 cc73385提交 78d986b提交 c64a8d2提交 9f792bb提交 9c620fc(2018 年 2 月 12 日)和提交 4ddddc1(2018 年 1 月 24 日),作者:Nguy\xe1\xbb\x85n Th\xc3\xa1i Ng\xe 1\ xbb\x8dc 值 ( )。\n (由Junio C Hamano合并-- --提交 bd0f794中sunshineco
pclouds
gitster,2018 年 3 月 14 日)

\n

对于你的情况,你可以移动到您现在想要的位置(当尝试为同一分支创建新工作树时)。

\n
\n

worktree move:新命令

\n
\n
\n

此命令允许重新定位链接的工作树。
\n主工作树(尚)无法移动。

\n
\n

和:

\n
\n

worktree move:拒绝移动带有子模块的工作树

\n
\n
\n

子模块包含.git具有相对路径的文件。
\n经过一个worktree move,这些文件需要更新,否则它们可能指向任何地方。

\n

这是一个绷带补丁,以确保“ worktree move”不会意外破坏人们的工作树。
\n当.git文件更新代码就位时,这validate_no_submodules()可以将其删除。

\n
\n
\n

注意:在 Git 2.21(2019 年第一季度)之前,当涉及子模块时,“ git worktree remove”和“ git worktree move”拒绝工作。
\n这已被放宽以忽略未初始化的子模块

\n
\n

在 Git 2.43(2023 年第 4 季度)中,一条旧时编写的消息阻止分支被签出,表示该分支已在其他地方签出,但现在,我们将正在被平分或重新基化的分支视为已检查的分支出来并保护它。
\n重新表述该消息以表明该分支正在使用中。

\n

请参阅Rub\xc3\xa9n Justo ( )提交的提交 2a49926提交 92edf61(2023 年 8 月 7 日)。\n (由Junio C Hamano 合并 -- --提交 f5f23a4,2023 年 8 月 24 日)rjusto
gitster

\n
\n

branch:检查正在使用的分支时出现错误消息

\n

签署人: Rub\xc3\xa9n Justo

\n
\n
\n

让我们更新当用户尝试签出另一个工作树中正在使用的分支时显示的错误消息,遵循4970bed中推理的指南(“ branch:更新消息以拒绝触摸正在使用的分支”,2023 -07-21,Git v2.42.0-rc0 --合并)。

\n
\n

相反is already checked out at,你会看到 is already used by worktree at

\n

这是Git 2.42 更改的后续内容。

\n