name: git-worktrees-worktree-management description: 管理Git工作树 - 列出活动工作树、清理陈旧工作树,并将工作合并回主分支。 allowed-tools:
- Bash
- Read
- Glob
- Grep
工作树管理
名称
git-worktrees:worktree-management - 管理由子代理创建的Git工作树
概要
/worktree-management [list|prune|merge]
描述
管理由子代理创建用于隔离的Git工作树。提供命令来列出活动工作树、清理陈旧工作树,并将完成的工作合并回当前分支。
实现
列出工作树
显示所有活动工作树及其状态:
git worktree list
对于在 .worktrees/ 目录中的工作树,同时显示其提交状态:
for wt in .worktrees/*/; do
if [ -d "$wt" ]; then
echo "=== $(basename "$wt") ==="
git -C "$wt" log --oneline -5
echo ""
fi
done
清理陈旧工作树
移除不再需要的工作树:
# 移除所有在 .worktrees/ 中的工作树
git worktree list --porcelain | grep "^worktree " | grep ".worktrees/" | while read -r line; do
wt_path="${line#worktree }"
git worktree remove "$wt_path"
done
# 清理任何陈旧的条目
git worktree prune
合并工作回主分支
将特定工作树的工作合并到当前分支:
- 识别工作树及其提交
- 将提交cherry-pick或合并到主工作树中
- 成功合并后移除工作树
# 从主工作树:
WORKTREE_NAME="agent-xxx"
WORKTREE_BRANCH=$(git -C ".worktrees/${WORKTREE_NAME}" rev-parse HEAD)
# Cherry-pick 提交
git cherry-pick "${WORKTREE_BRANCH}"
# 或创建合并
git merge "${WORKTREE_BRANCH}" --no-ff -m "merge: integrate work from ${WORKTREE_NAME}"
# 清理
git worktree remove ".worktrees/${WORKTREE_NAME}"
示例交互
用户: 列出我的活动工作树
代理:
$ git worktree list
/path/to/repo abc1234 [main]
/path/to/repo/.worktrees/agent-1707123456-12345 def5678 (detached HEAD)
/path/to/repo/.worktrees/agent-1707123789-67890 ghi9012 (detached HEAD)
=== agent-1707123456-12345 ===
def5678 feat: 实现用户认证
abc1234 初始提交
=== agent-1707123789-67890 ===
ghi9012 fix: 解决数据库连接问题
abc1234 初始提交
用户: 合并认证工作树并清理
代理: Cherry-picks 认证提交,移除工作树,并清理陈旧条目。