第2课:Worktree基本操作
课程目标
- 掌握Git Worktree的核心命令
- 学会管理多个Worktree
- 了解Worktree的清理和维护
理论讲解
Git Worktree核心命令
Git Worktree主要包含以下几个命令:
git worktree add:创建新的Worktreegit worktree list:列出所有Worktreegit worktree remove:删除Worktreegit 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前的注意事项
# 必须先提交或暂存所有更改
# 否则会提示错误,无法删除
练习任务
- 创建至少3个不同的Worktree
- 在每个Worktree中进行不同的修改并提交
- 练习删除、锁定、解锁Worktree操作
- 使用prune命令清理无效记录
- 验证所有操作的结果
小结
本课我们详细学习了Git Worktree的所有核心命令,并通过实践掌握了创建、管理、删除Worktree的方法。下一课我们将探讨Worktree在实际开发中的应用场景。