SuperAPI AI 工具集

git-split

编程与开发

查看项目

更新于 10-15 10:10

技能介绍

用途

git-split 是一个关于 Git 历史管理的代码重构工作流提示词,用于把大型文件拆分为更小、职责更聚焦的模块,并在拆分过程中保留被抽取代码的完整 Git 历史(blame、log)。它面向的是需要重构巨型源文件、又不希望丢失代码追溯信息的开发场景。

主要能力

  • 提供「分支-合并」(branch-merge)技术来保留 Git 历史:从文件初始提交创建分支,在该分支上进行拆分改动,再用特殊合并策略合回,从而让新文件继承原文件的历史记录。
  • 提供分析步骤:查看文件历史、定位引入该文件的首次提交、统计行数并识别逻辑分节。
  • 提供拆分规划要点:逻辑分组、依赖关系、命名、以及用于保持向后兼容的 barrel exports(桶导出)。
  • 提供历史分支创建与合并的具体命令流程。
  • 提供简化替代方案:在不需要精确历史保留时,使用 git mv 配合 Git 的重命名检测能力。
  • 提供工作流小结与最佳实践、常见陷阱清单。

使用方式

该提示词以交互方式被使用,包含以下环节:

  1. 工具与前提要求:Git CLI 必须可用;工作区应当干净(无未提交更改);应当位于特性分支,而非 main 分支。文档给出了检测命令:使用 git status --porcelain 校验工作区,使用 git rev-parse --abbrev-ref HEAD 判断当前分支,若为 latest、main 或 master 则报错并退出。
  2. 分析文件:使用 git log --oneline --follow 查看历史,使用 git log --diff-filter=A --follow --format="%H" 查找首次引入文件的提交,使用 wc -l 统计行数。
  3. 规划拆分:确定逻辑分组、依赖、命名方案与 barrel exports。
  4. 创建历史分支:定位引入文件的首次提交,用 git checkout -b split-history "${first_commit}^" 从首个提交的父提交创建分支,然后以复制(而非移动)方式把原文件复制到新位置,提交并加注说明为拆分准备。
  5. 回到特性分支并合并:使用 git checkout - 返回,使用 git merge split-history --no-commit -X ours 合并,随后实际编辑内容——裁剪新文件只保留各自部分、更新原文件为再导出或移除、更新代码库中的导入,最后统一提交。
  6. 清理与验证:使用 git branch -d split-history 删除临时分支,用 git log --follow 与 git blame 验证历史是否保留。

当用户传入 help 选项时,提示词要求解释用法、说明是否缺少前置条件或工具要求,并且在完成这些说明后立即退出,不继续执行。

适用场景

  • 将体积庞大、职责混杂的源文件重构为多个聚焦模块。
  • 需要在重构后仍能对抽取出的代码执行 blame / log 追溯。
  • 位于特性分支上的重构工作,且希望一次性、原子地更新所有导入引用。

限制与注意事项

  • 依赖 Git CLI,并且要求干净的工作区与特性分支;主分支(latest、main、master)上不允许执行拆分。
  • 若他人正在该分支上工作,不应强制推送。
  • 若原文件属于公共 API,不要遗漏 barrel exports。
  • 需规划拆分以避免引入循环依赖。
  • 拆分后应运行测试以确保未破坏现有功能。
  • 资料中未提供该工具的收费、价格、平台支持范围与性能指标等信息。