用途:将特性分支以 squash merge 方式合并进 main,保持线性提交历史。
主要能力与流程:
- 合并前检查:确定源分支(可用参数指定,否则取当前分支);若源分支是 main 则报错终止;用 git status --porcelain 检查未提交改动并建议先提交或 stash;用 git rev-parse --verify <branch> 确认分支存在;用 git log main..<branch> --oneline 确认与 main 有分叉。
- 切换主分支:git checkout main;若有远程 origin,执行 git pull --ff-only,失败则终止(main 已分叉需手动处理)。
- squash 合并:git merge --squash <branch>。出现冲突时执行 git merge --abort,切回源分支,建议先运行 git rebase main 解决冲突后重试,然后停止。
- 提交委托:合并成功后调用 /git-commit 处理提交(含敏感文件守卫、自动暂存已跟踪改动、多关注点分析、Conventional Commits 消息生成、heredoc 提交与 Co-Authored-By、钩子失败处理)。不直接撰写提交信息。
- 提交后验证:运行 git log --oneline -5、git status、git diff,确认工作树干净、squash 提交位于 HEAD、无残留暂存改动。
- 清理:先尝试 git branch -d <branch>;因 squash 合并不保留祖先关系,-d 可能失败,此时用 git diff main <branch> 确认零差异后再 git branch -D 强删,若仍有差异则不得删除。远程分支用 git ls-remote --heads origin <branch> 检查,存在则 git push origin --delete <branch>。
规则:合并前检查即安全闸,无需用户确认;只合并进 main;始终使用 --squash;始终委托 /git-commit;冲突即终止不自动解决;禁止强推;优先 -d,仅在确认零差异后使用 -D;任一步失败即停止报告。
限制与适用场景:适用于特性分支合入 main 的线性历史工作流。需要本地 git 环境与可用的 /git-commit 技能;具体安装方式和平台支持暂未提供。