Install
openclaw skills install @thcjp/git-workflows-tool-freeopenclaw skills install @thcjp/git-workflows-tool-free本工具为进阶开发者提供超越基础 add/commit/push 的 Git 操作指引,涵盖交互式变基、二分查找、工作树、引用日志恢复、樱桃挑选等核心场景。通过自然语言指令驱动,帮助开发者清理提交历史、定位缺陷来源、并行处理多分支任务,并在误操作后快速恢复。免费版聚焦个人开发者最常用的高频进阶操作,提供完整的命令模板与示例。
| 能力模块 | 描述 | 典型用法 |
|---|---|---|
| 交互式变基 | 整理、合并、重排、编辑提交 | 帮我合并最近 5 个提交 |
| 二分查找 | 定位引入缺陷的提交 | 用 bisect 找到引入 bug 的提交 |
| 工作树 | 并行处理多个分支 | 创建工作树处理紧急修复 |
| 引用日志恢复 | 恢复丢失的提交和分支 | 恢复误删的提交 |
| 樱桃挑选 | 跨分支复制特定提交 | 把这个提交挑选到 main 分支 |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置。 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 按照skill规范执行核心功能执行操作,遵循单一意图原则。 输出: 返回核心功能执行的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 按照skill规范执行参数配置与调用操作,遵循单一意图原则。 输出: 返回参数配置与调用的执行结果,包含操作状态和输出数据。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 按照skill规范执行结果处理与输出操作,遵循单一意图原则。 输出: 返回结果处理与输出的执行结果,包含操作状态和输出数据。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Git、进阶操作助手、涵盖交互式变基、工作树与引用日志、面向进阶开发者的、高级操作工具、add、commit、push、之外的核心进阶场、rebase、整理提交历史、worktree、并行多分支开发、reflog等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。功能分支包含多个琐碎提交,合并前需要整理成清晰的提交序列。
用户:我的功能分支有 5 个琐碎提交,合并前想整理一下
助手:使用交互式变基
1. 启动变基
git rebase -i HEAD~5
2. 编辑器中会显示提交列表
pick a1b2c3d 添加用户模型
pick e4f5g6h 修复模型拼写错误
pick i7j8k9l 添加用户控制器
pick m0n1o2p 添加用户路由
pick q3r4s5t 修复控制器导入
3. 修改操作指令(合并修复提交)
pick a1b2c3d 添加用户模型
fixup e4f5g6h 修复模型拼写错误
pick i7j8k9l 添加用户控制器
fixup q3r4s5t 修复控制器导入
pick m0n1o2p 添加用户路由
4. 保存退出后自动完成变基
5. 如需放弃变基
git rebase --abort
6. 如遇冲突解决后继续
git add .
git rebase --continue
线上发现一个回归缺陷,需要快速找到是哪个提交引入的。
用户:登录功能在某个提交后坏了,帮我用 bisect 找出来
助手:
1. 启动二分查找
git bisect start
2. 标记当前版本为坏
git bisect bad
3. 标记已知正常的版本
git bisect good v1.2.0
4. Git 会自动切换到中间提交,测试后标记
git bisect good # 这个提交正常
git bisect bad # 这个提交有问题
5. 重复直到定位到具体提交
6. 完成后重置
git bisect reset
正在开发功能时收到紧急修复任务,不想丢失当前工作。
# 创建工作树处理紧急修复
git worktree add ../project-hotfix hotfix/urgent-fix
# 创建新分支的工作树
git worktree add ../project-feature -b feature/new-thing
# 查看所有工作树
git worktree list
# 在工作树中完成工作后移除
cd ../project-hotfix
# 完成修复并推送
cd ../project
git worktree remove ../project-hotfix
# 清理无效的工作树引用
git worktree prune
以下场景Git高级操作免费版不适合处理:
需要AI模型调用、智能对话、Agent编排、LLM应用时使用。不适用于非本工具能力范围的需求。
git rebase -i HEAD~5 # 变基最近 5 个提交
git rebase -i main # 变基到 main 分支
git rebase --abort # 取消变基
git rebase --continue # 解决冲突后继续
git rebase --skip # 跳过当前提交
变基操作指令:
| 指令 | 作用 | 说明 |
|---|---|---|
| pick | 保留提交 | 使用提交原样 |
| reword | 修改信息 | 保留提交但修改提交信息 |
| edit | 暂停编辑 | 停在此提交进行修改 |
| squash | 合并保留信息 | 合并到上一个提交,保留两条信息 |
| fixup | 合并丢弃信息 | 合并到上一个提交,丢弃提交信息 |
| drop | 删除提交 | 完全移除该提交 |
# 创建修复提交(自动标记目标)
git commit --fixup=a1b2c3d
git commit --squash=a1b2c3d
# 自动整理
git rebase -i --autosquash main
# 手动二分
git bisect start
git bisect bad
git bisect good v1.2.0
# 自动化二分(带测试脚本)
git bisect start HEAD v1.2.0
git bisect run ./test-for-bug.sh
# 示例
cat > /tmp/test-for-bug.sh << 'EOF'
#!/bin/bash
npm test -- --grep "login should redirect" 2>/dev/null
EOF
chmod +x /tmp/test-for-bug.sh
git bisect run /tmp/test-for-bug.sh
# 跳过无法构建的提交
git bisect skip
结果处理: 执行完成后,查看输出结果确认操作状态。成功时输出包含处理摘要和结果数据;失败时根据错误信息排查问题,查阅错误处理章节获取恢复步骤。
# 查看所有操作记录
git reflog
git reflog show feature/my-branch
git reflog --date=relative
# 恢复到指定状态
git reset --hard HEAD@{2} # 回到 2 步之前的状态
git reset --hard ghi789 # 回到指定提交
# 恢复误删的分支
git branch recovered-branch abc123
# 查找丢失的提交
git fsck --unreachable | grep commit
# 查找丢弃的暂存
git stash list
git log --walk-reflogs --all -- stash
# 挑选单个提交
git cherry-pick abc123
# 挑选多个提交
git cherry-pick abc123 def456 ghi789
# 挑选提交范围
git cherry-pick abc123..ghi789
# 不自动提交
git cherry-pick --no-commit abc123
# 冲突处理
git add resolved-file.ts
git cherry-pick --continue
git cherry-pick --abort
变基仅限本地分支:永远不要变基已推送到共享分支的提交
引用日志是安全网:误操作后 90 天内提交均可恢复
git reflog
工作树比多克隆更高效:工作树共享 .git 存储,节省磁盘空间
自动化二分更可靠:git bisect run 配合测试脚本消除人为错误
使用 fixup 提交:开发时用 --fixup 标记,合并前统一整理
git commit --fixup=目标提交
git rebase -i --autosquash main
樱桃挑选后测试:跨分支复制提交后务必运行测试
# 放弃变基
git rebase --abort
# 或逐个解决
git status
# 编辑冲突文件
git add .
git rebase --continue
# 跳过无法解决的提交
git rebase --skip
git bisect skip # 跳过当前提交
git bisect skip v1.3.0..v1.3.5 # 跳过指定范围
# 追踪文件重命名的历史
git log --follow --oneline -- src/auth.ts
# 查看文件每行最后修改者
git blame src/auth.ts
git blame -L 50,70 src/auth.ts # 指定行范围
# 查找字符串被添加/删除的提交
git log -S "function oldName" --oneline
git log -G "TODO.*hack" --oneline
# 强制删除
git worktree remove --force ../project-hotfix
# 清理无效引用
git worktree prune
git reflog # 找到丢失的提交哈希
git reset --hard abc123 # 恢复到该提交
# 查看冲突文件
git status
# 解决冲突后
git add .
git cherry-pick --continue
# 放弃樱桃挑选
git cherry-pick --abort
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Git | 命令行工具 | 必需 | 系统包管理器安装 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
输入:用户提供操作指令和必要参数
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功