Git Worktree 使用指南

什么是 Git Worktree?

Git Worktree 是 Git 的一个功能,允许你在同一个 Git 仓库中同时拥有多个工作目录。每个工作树都可以指向不同的分支,使你能够在不切换分支的情况下并行工作。

基本用法

1. 创建新的工作树

csharp 复制代码
# 创建新的工作树并切换到指定分支
git worktree add <路径> <分支名>

# 示例:在 ../feature-branch 目录创建新工作树并切换到 feature/x 分支
git worktree add ../feature-branch feature/x

# 创建新工作树并基于当前提交创建新分支
git worktree add -b <新分支名> <路径> [基础提交]
git worktree add -b new-feature ../new-feature

2. 列出所有工作树

bash 复制代码
# 列出所有工作树
git worktree list

# 详细列出工作树信息
git worktree list --verbose

3. 切换到工作树

bash 复制代码
# 直接切换到工作树目录
cd <工作树路径>

# 示例
cd ../feature-branch

4. 删除工作树

csharp 复制代码
# 删除工作树(需要先确保工作树是干净的)
git worktree remove <工作树路径>

# 强制删除(即使有未提交的更改)
git worktree remove --force <工作树路径>

# 示例
git worktree remove ../feature-branch

5. 移动工作树

bash 复制代码
# 移动工作树到新位置
git worktree move <原路径> <新路径>

# 示例
git worktree move ../old-location ../new-location

高级用法

1. 创建临时工作树

sql 复制代码
# 创建临时工作树,在删除时会自动清理
git worktree add --detach <路径> [提交哈希]
git worktree add --detach ../temp-worktree HEAD~1

2. 锁定工作树

csharp 复制代码
# 锁定工作树(防止意外删除)
git worktree lock <工作树路径>

# 解锁工作树
git worktree unlock <工作树路径>

3. 修复损坏的工作树

bash 复制代码
# 修复工作树元数据
git worktree repair <工作树路径>

实用场景示例

场景1:同时处理功能和修复

bash 复制代码
# 主工作区:开发新功能
cd /path/to/main/repo
git checkout develop

# 创建专门的工作树处理紧急修复
git worktree add -b hotfix ../hotfix main
cd ../hotfix
# 修复bug并提交

# 回到主工作区继续开发
cd /path/to/main/repo

场景2:代码审查

bash 复制代码
# 创建专门的工作树来审查特定PR
git worktree add -b review-pr-123 ../review-pr-123 origin/pr-branch
cd ../review-pr-123
# 进行代码审查和测试

场景3:并行测试

bash 复制代码
# 主工作区:继续开发
cd /path/to/main/repo

# 创建工作树运行长时间测试
git worktree add ../long-running-tests test-branch
cd ../long-running-tests
./run-long-tests.sh

管理多个工作树

查看工作树状态

css 复制代码
# 查看所有工作树的状态
git worktree list

# 输出示例:
/path/to/main/repo      abc1234 [main]
/path/to/feature-branch def5678 [feature/x]
/path/to/hotfix         ghi9012 [hotfix]

清理过期工作树

bash 复制代码
# 清理已删除的工作树记录
git worktree prune

# 先检查哪些会被清理
git worktree prune --dry-run

最佳实践

  1. 有意义的路径命名:使用描述性的目录名
  2. 定期清理:删除不再需要的工作树
  3. 注意磁盘空间:多个工作树会占用更多空间
  4. 使用相对路径:便于团队协作和路径一致性
  5. 文档化工作树用途:在团队中明确每个工作树的目的

常见问题解决

工作树删除失败

csharp 复制代码
# 如果工作树目录已被手动删除
git worktree prune

# 如果工作树有未提交的更改,先提交或储藏
git add .
git commit -m "临时提交"
git worktree remove <路径>

工作树锁定问题

bash 复制代码
# 查看锁定状态
git worktree list

# 强制解锁
git worktree unlock --force <路径>

Git Worktree 是一个强大的工具,特别适合需要同时在多个分支上工作的场景,可以显著提高开发效率。

相关推荐
呆萌的代Ma2 小时前
Git不强行推送,撤销最近几次的提交
git
透明的玻璃杯5 小时前
git应用
git
炸炸鱼.6 小时前
Git+Jenkins实战(一):从零搭建自动化发布与回滚系统(附完整代码)
git·jenkins
言6669 小时前
要忽略前端依赖包node_modules的文件在目录下 git暂存区消失
git
胡小禾9 小时前
Git Worktree
git
程序员小羊!10 小时前
18 GIt
git
怣疯knight10 小时前
Git 本地分支关联远程分支 常用命令汇总
git
ANNENBERG10 小时前
git分支开发管理
git
坤坤藤椒牛肉面10 小时前
GIT的使用
git
w32963627110 小时前
使用 OpenCode 在 Windows 上加速安装 Playwright 的完整指南
windows·git