第2课:Worktree基本操作

33 阅读3分钟

第2课:Worktree基本操作

课程目标

  • 掌握Git Worktree的核心命令
  • 学会管理多个Worktree
  • 了解Worktree的清理和维护

理论讲解

Git Worktree核心命令

Git Worktree主要包含以下几个命令:

  • git worktree add:创建新的Worktree
  • git worktree list:列出所有Worktree
  • git worktree remove:删除Worktree
  • git worktree prune:清理无效的Worktree记录
  • git worktree lock/unlock:锁定/解锁Worktree

实践操作

1. git worktree add - 创建Worktree

# 基本语法
git worktree add <路径> <分支>

# 示例:基于现有分支创建Worktree
git worktree add ../feature-worktree feature-branch

# 示例:创建新分支并创建Worktree
git worktree add ../new-feature-worktree -b new-feature

# 示例:基于当前提交创建Worktree
git worktree add ../hotfix-worktree HEAD

2. git worktree list - 列出Worktree

# 显示所有Worktree及其状态
git worktree list

# 以简洁格式显示
git worktree list --porcelain

3. git worktree remove - 删除Worktree

# 删除指定的Worktree
git worktree remove <路径>

# 注意:必须先在该Worktree目录中提交或暂存所有更改

4. git worktree prune - 清理Worktree记录

# 清理无效的Worktree记录
git worktree prune

# 显示将要清理的内容(但不执行)
git worktree prune -n

5. git worktree lock/unlock - 锁定Worktree

# 锁定Worktree以防止意外删除
git worktree lock <路径>

# 解锁Worktree
git worktree unlock <路径>

实际操作练习

练习1:创建多个Worktree

# 1. 创建新分支并添加文件
git checkout -b hotfix-branch
echo "Hotfix content" > hotfix.txt
git add hotfix.txt
git commit -m "Add hotfix file"
git checkout main

# 2. 基于不同分支创建多个Worktree
git worktree add ../feature-worktree feature-branch
git worktree add ../hotfix-worktree hotfix-branch
git worktree add ../new-feature-worktree -b new-feature

# 3. 查看所有Worktree
git worktree list

练习2:在不同Worktree中工作

# 1. 在feature-worktree中修改文件
cd ../feature-worktree
echo "Additional feature content" >> feature.txt
git add feature.txt
git commit -m "Update feature file"

# 2. 在hotfix-worktree中修复bug
cd ../hotfix-worktree
echo "Hotfix v2" > hotfix.txt
git add hotfix.txt
git commit -m "Update hotfix file"

# 3. 在new-feature-worktree中开发新功能
cd ../new-feature-worktree
echo "New feature implementation" > new-feature.txt
git add new-feature.txt
git commit -m "Add new feature file"

练习3:管理Worktree

# 1. 查看所有Worktree状态
cd ../git-worktree-demo
git worktree list

# 2. 删除不再需要的Worktree
git worktree remove ../new-feature-worktree

# 3. 清理无效记录
git worktree prune -n  # 查看将要清理的内容
git worktree prune     # 执行清理

# 4. 锁定重要Worktree
git worktree lock ../feature-worktree
git worktree list  # 查看锁定状态

# 5. 解锁Worktree
git worktree unlock ../feature-worktree

常见问题和注意事项

1. 路径冲突

# 错误示例:路径已存在
git worktree add ../existing-folder branch-name  # 会失败

# 解决方案:使用新路径或先删除旧目录
git worktree add ../new-folder branch-name

2. 同一分支的多个Worktree

# 错误示例:不能基于同一分支创建多个Worktree
git worktree add ../wt1 feature-branch
git worktree add ../wt2 feature-branch  # 会失败

# 解决方案:使用辅助分支或_detached_ HEAD
git worktree add ../wt2 --detach feature-branch

3. 删除Worktree前的注意事项

# 必须先提交或暂存所有更改
# 否则会提示错误,无法删除

练习任务

  1. 创建至少3个不同的Worktree
  2. 在每个Worktree中进行不同的修改并提交
  3. 练习删除、锁定、解锁Worktree操作
  4. 使用prune命令清理无效记录
  5. 验证所有操作的结果

小结

本课我们详细学习了Git Worktree的所有核心命令,并通过实践掌握了创建、管理、删除Worktree的方法。下一课我们将探讨Worktree在实际开发中的应用场景。