Git中新建working tree与branch的核心区别是什么?
Git工作树(worktree)与分支概念答疑
你提到的理解修正
- 首先纠正一个核心偏差:同一仓库下的所有工作树共享全局分支数据,不存在某个工作树「自带独立Main分支」的情况。所有分支属于仓库本身,不属于单个工作树,你在任意工作树新增、修改、删除分支,其余关联工作树都能同步看到变化。
- 工作树的独立性体现在「工作目录内容完全隔离」:你可以在A工作树检出main分支开发新功能,同时在B工作树检出v2.0标签修复线上bug,两个工作目录的文件互不干扰,不需要你临时提交或者暂存未完成的代码。
- 你可以在任意工作树内创建新分支,新建的分支会同步到仓库全局分支列表,其余工作树可以直接检出使用。注意Git默认不允许两个工作树同时检出同一个可写分支,避免出现提交冲突。
常用操作示例
你可以用下面几个命令快速测试工作树功能:
- 给当前仓库新增一个工作树,指定检出dev分支,存放目录为
../workspace-dev:git worktree add ../workspace-dev dev - 查看当前仓库关联的所有工作树:
git worktree list - 删除不再需要的工作树:
git worktree remove ../workspace-dev
关于公开仓库示例的说明
不存在公开的「包含多工作树的Git仓库」,因为工作树是本地操作的产物,不会被提交推送到远程仓库。任意Git仓库都原生支持多工作树功能,你随便找一个已有的本地仓库,执行上面的示例命令就能直接测试使用。
内容的提问来源于stack exchange,提问作者aanhlle
相关产品推荐
相关产品推荐

