远程 Git 工作树已分离。

3
我正在尝试将工作树添加到一个远程分支,如果该分支未在本地存储。我可以使用以下命令成功地获取所有文件:
git worktree add issue origin/issue

这将产生以下输出:

Preparing issue (identifier issue)
HEAD is now at d4bb4b9 Action edit performed on issue: ISSUE-1

这使得工作树似乎已经成功。如果我查看文件,所有内容都在那里。
然而,git status命令显示如下:
git status
Not currently on any branch.
nothing to commit, working tree clean

我无法推送/拉取任何东西,Git版本是2.14.1,在Windows上(如果有区别的话)。 有人知道如何解决这个问题吗?如果分支是本地的并且删除origin/后,它可以正常工作。只是处理远程时似乎不太一致。

2个回答

2

完整语法如下:

git worktree add [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>]

所以尝试一下:
git worktree add --checkout -b issue ../a/path origin/issue

OP Liam Kelly在评论中补充道:

然而,实际上你并不需要使用 --checkout 命令,只需要使用 -b 就可以了。
我甚至没有想到 -b 可以从远程创建本地分支。


这个完全有效。然而实际上你不需要使用 --checkout 命令,只需要使用 -b 就可以了。我甚至没有想到 -b 可以在本地从远程创建分支。加一! - undefined
@LiamKelly 不错的观点。我已将您的评论包含在答案中,以增加可见性。 - undefined

2
如果分支是本地的并且你移除了 origin/,它就能完美地工作。只有在处理远程分支时才会出现问题。
你不能在远程分支上工作(在工作树或普通仓库中)。你只能在本地分支上工作(推送和拉取)。
因此,你必须创建本地跟踪分支,然后在工作树中使用它。
当你推送和拉取以镜像远程存储库中分支的状态时,Git 会更新远程分支。
所以,你可以:
- 在现有的本地分支上创建一个工作树(不是当前分支)。 - 在创建工作树时/同时创建一个分支,以便能够在其中提交。

你说得对,我确实需要进行本地追踪。对于寻找这个解决方案的人来说,你可以使用命令"git branch -f <local-branch-name> <remote-branch>"来添加远程追踪。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接