一个 git 工作树是否支持多个分支?

Does one git worktree support multiple branches?

根据文档,每个 git worktree 服务一个 branchdev/feature/prod 等等),但听起来也不是对我来说合理的是,每个分支都有自己的 worktree,因为它会创建许多文件夹,并且在某些时候可能会造成混淆。

一个git worktree可以支持多个branches吗?例如属于 feature 的所有分支,然后在当前相关的内容之间切换?这是正确的做法吗?

来自https://git-scm.com/docs/git-worktree

A git repository can support multiple working trees, allowing you to check out more than one branch at a time. With git worktree add a new working tree is associated with the repository. This new working tree is called a "linked working tree" as opposed to the "main working tree" prepared by git-init or git-clone.

如果你想添加一个新的分支到工作树你需要这样写:
git worktree add <path> <branch_name>

例如:

git checkout -B new_branch
git checkout main
git worktree add ./new_branch new_branch

删除它: git worktree remove

它看起来如何: in tree view

在路径参数中你可以传递任何东西。所以你可以根据需要管理你的分支,例如你可以创建文件夹,你将只存储有错误修复或未来的分支。

git worktree 创建一个共享您现有本地存储库的新签出。它有自己的 HEAD,用于跟踪当前签出的提交,以及用于构建提交的暂存区。它的主要目的是能够同时在多个分支上工作,而不必克隆整个存储库或隐藏您的更改。

工作树的工作原理与任何其他结帐基本相同。您可以切换到您喜欢的任何分支,除非它已经被另一个工作树检出。你可以 运行 git-平分。你可以变基。

工作树不必用于新分支,它可以用于现有分支。 git worktree add ../temp master 将创建一个工作树,主节点已检出。

如果您打算同时在多个分支上工作,您只需要创建工作树。例如,您正在处理一项功能并且有很多未提交的更改并且出现紧急修复。您可以为该修复创建一个工作树,在工作树中进行修复,然后 return 到您的原始功能工作。或者你可能想针对旧版本测试一些东西,你可以制作一个工作树并检查旧版本。

一个好的开发过程不需要你同时在多个分支上工作。