前置知识: Git

git-worktree

00:00
1 min Intermediate 2026/6/14

git worktree详解:多工作树并行开发,无需频繁切换分支。

1. worktree 概述

1.1 什么是 worktree

git worktree 允许从同一仓库检出工作目录,每个目录对应不同分支共享 .git 数据。

主工作树: ~/project/           → main 分支
工作树2:  ~/project-feature/   → feature 分支
工作树3:  ~/project-hotfix/    → hotfix 分支

共享: ~/project/.git/

1.2 优势

优势说明
无需 stash不同分支在不同目录
并行开发同时在分支工作
快速切换不需要切换分支
空间共享 .git 数据

2. 基本用法

2.1 创建工作树

# 基于现有分支创建
git worktree add ../project-feature feature

# 基于新分支创建
git worktree add -b new-feature ../project-new-feature main

# 创建分离 HEAD 的工作树
git worktree add --detach ../project-v1 v1.0.0

2.2 管理工作树

# 列出所有工作树
git worktree list
# /home/user/project            abc1234 [main]
# /home/user/project-feature    def5678 [feature]
# /home/user/project-hotfix     ghi9012 [hotfix/bug]

# 在工作树中工作
cd ../project-feature
git log
git commit -m "feat: add new feature"

# 删除工作树
git worktree remove ../project-feature

# 强制删除(有未提交修改)
git worktree remove --force ../project-feature

2.3 清理工作树

# 清理已删除目录的工作树引用
git worktree prune

# 查看将被清理的
git worktree prune --dry-run

3. 实际场景

3.1 紧急修复

# 正在 feature 分支开发
# 需要紧急修复 Bug

# 不需要 stash,直接创建工作树
git worktree add ../hotfix -b hotfix/bug-123 main
cd ../hotfix
# 修复 Bug
git commit -m "fix: resolve bug 123"
git push origin hotfix/bug-123
cd ../project
git worktree remove ../hotfix

3.2 代码审查

# 检出同事的 PR 到独立工作树
git worktree add ../review-pr -b review origin/colleague/feature
cd ../review-pr
# 测试和审查

3.3 对比版本

# 同时查看两个版本的代码
git worktree add ../v1-compare v1.0.0
# 在两个目录间对比
diff -r src/ ../v1-compare/src/

4. 注意事项

  • 同一分支不能同时在工作树中检出
  • 工作共享 .git 目录操作互不影响
  • 删除工作目录后需 git worktree prune
  • 工作树中的需要初始化

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式