如何在 Git 中的两个独立工作树之间切换分支?
How to switch branches between two separate worktrees in Git?
我为“开发”分支添加了链接工作树。所以我的工作树是这样的:
- "project" 工作树 -> 主分支
- "project_develop" 工作树 -> 开发分支
在这种情况下,我想做的是检查“project_develop”工作树上的主分支。但据我所知,不可能在不同的工作树上检查同一个分支。我能想到的唯一方法是添加一个新的临时分支。
如果有人告诉我另一种方法,我将不胜感激。
谢谢!
我认为创建一个临时分支是最好的。如果您不想创建临时分支,您还有其他选择。
签出一个特定的提交。在你的情况下,你可以 运行 git checkout refs/heads/master
。它导致分离的 HEAD 状态。 refs/heads/master
可以替换为特定的提交。
为分离的 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
.
将 develop
重置为 master
。在 "project_develop" 工作树中,运行 git reset master --hard
.
这些方法绕过了不能为同一分支创建第二个工作树的限制。第一和第二几乎与临时分支相同。一段时间后,第三个可能会让你感到困惑。
最简单的方法是,在 master
工作树
git checkout --detach
还有许多其他方法;关键是,由于您没有另一个分支可以检出此工作树,因此您想强制它进入分离 HEAD
状态。它仍然可以检出相同的代码;它只是不能认为它是 "on" master
分支(因为在提交时更新工作树会有问题)。
完成后,您可以 git checkout master
进入第二个工作树,然后如果您愿意,甚至可以返回到第一个工作树并 git checkout develop
完全交换分支。或者等到你准备好检查 develop
回到第二个工作树,然后再次检查 master
出第一棵树...
我为“开发”分支添加了链接工作树。所以我的工作树是这样的:
- "project" 工作树 -> 主分支
- "project_develop" 工作树 -> 开发分支
在这种情况下,我想做的是检查“project_develop”工作树上的主分支。但据我所知,不可能在不同的工作树上检查同一个分支。我能想到的唯一方法是添加一个新的临时分支。
如果有人告诉我另一种方法,我将不胜感激。
谢谢!
我认为创建一个临时分支是最好的。如果您不想创建临时分支,您还有其他选择。
签出一个特定的提交。在你的情况下,你可以 运行
git checkout refs/heads/master
。它导致分离的 HEAD 状态。refs/heads/master
可以替换为特定的提交。为分离的 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
.将
develop
重置为master
。在 "project_develop" 工作树中,运行git reset master --hard
.
这些方法绕过了不能为同一分支创建第二个工作树的限制。第一和第二几乎与临时分支相同。一段时间后,第三个可能会让你感到困惑。
最简单的方法是,在 master
工作树
git checkout --detach
还有许多其他方法;关键是,由于您没有另一个分支可以检出此工作树,因此您想强制它进入分离 HEAD
状态。它仍然可以检出相同的代码;它只是不能认为它是 "on" master
分支(因为在提交时更新工作树会有问题)。
完成后,您可以 git checkout master
进入第二个工作树,然后如果您愿意,甚至可以返回到第一个工作树并 git checkout develop
完全交换分支。或者等到你准备好检查 develop
回到第二个工作树,然后再次检查 master
出第一棵树...