2

我为“开发”分支添加了一个链接的工作树。所以我的工作树是这样的:

- “项目”工作树 -> 主分支
- “project_develop”工作树 -> 开发分支

在这种情况下,我想做的是在“project_develop”工作树上签出 master 分支。但据我所知,不可能在不同的工作树上签出同一个分支。我能想到的唯一方法是添加一个新的临时分支。

如果有人向我展示另一种方式,我将不胜感激。
谢谢!

4

2 回答 2

5

最简单的方法是,在master工作树上

git checkout --detach

还有许多其他方法;关键是,由于您没有另一个分支可以检出此工作树,因此您想强制它进入分离HEAD状态。它仍然可以签出相同的代码;它只是不能认为它“在”master分支上(因为在提交时更新工作树会出现问题)。

完成后,您可以选择第二个工作树git checkout master,然后如果您愿意,您甚至可以返回第一个工作树并git checkout develop完全交换分支。或者只是等到您准备好检查develop第二个工作树,然后master再次检查第一棵树......

于 2019-04-02T09:32:29.687 回答
1

我认为创建一个临时分支是最好的。如果您不想创建临时分支,您还有其他选择。

  1. 签出特定的提交。在你的情况下,你可以运行git checkout refs/heads/master. 它导致分离的 HEAD 状态。refs/heads/master可以替换为特定的提交。

  2. 为分离的 HEAD 创建任意数量的工作树。您可以运行git worktree add /path/foo1 refs/heads/master, git worktree add /path/foo2 refs/heads/master, ..., git worktree add /path/fooN refs/heads/master.

  3. 重置developmaster。在“project_develop”工作树中,运行git reset master --hard.

这些方法绕过了不能为同一分支创建第二个工作树的限制。第 1 和第 2 几乎是相同的临时分支。第三个可能会让你在一段时间后感到困惑。

于 2019-04-02T08:08:21.797 回答