Git 工作流指引
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的指引,将 @kunlungrowth/kg-git-workflow 这个技能安装到我的 AI 助手中。
技能介绍
那些让人反复踩坑的 Git 场景
日常协作中,Git 的大部分问题并不源于命令本身,而是源于「下一步该做什么」的判断失误。常见的几个场景:
- PR 标题写成
feat: update,描述里全是分支名,reviewer 只能靠猜改动意图。 - 已合并的分支堆积在本地和远程,
git branch列出来几百条,清理时怕误删未合并的分支。 - 多人协作的合并冲突,不同区域冲突好处理,架构层面的冲突往往需要人拍板,自动脚本帮不上忙。
- Monorepo 里打
v2.1.0标签,不知道指的是哪个包,CI 和发布脚本拿到的语义是模糊的。 - 新仓库首次
git add .把node_modules/和.env全提交进去了,事后清理成本高。
技能的工作方式
这个技能把上述场景拆成结构化步骤,每一步都明确要执行的命令和校验点。它不做「一键完成」的承诺,而是按工作流分步推进,每一步产出可检查的结果。
A. 准备 Pull Request
- 收集上下文:运行
git log main..HEAD --oneline列出分支提交,git diff main...HEAD --stat查看改动文件,git status检查未提交工作。 - 起草 PR 内容:标题不超过 70 字符,描述改动而非分支名,正文说明「为什么」、列出关键改动、附测试计划。摘要基于提交历史生成,不靠记忆。
- 推送并创建:
git push -u origin HEAD后用gh pr create创建,正文模板见references/template.md。 - 校验:
gh pr view --web在浏览器打开确认。
B. 安全清理已合并分支
- 切到
main并拉取最新:git checkout main && git pull。 - 列出已合并分支(排除
main、master、develop)。 - 删除本地已合并分支:
git branch --merged main过滤后逐条git branch -d。 - 修剪远程跟踪引用:
git fetch --prune。
C. 合并冲突解决
- 评估范围:
git fetch origin后尝试git merge origin/main --no-commit --no-ff,用git diff --name-only --diff-filter=U列出冲突文件。 - 逐文件解决:不同区域保留双方改动;架构冲突时倾向
main方案并在此之上重做 PR 意图。 - 若 rebase 更干净(提交少、无共享历史):
git rebase origin/main,逐提交解决后git rebase --continue。 - 若 rebase 混乱(多冲突、架构分歧):中止后提取有用代码
git show origin/branch:path > /tmp/extracted.txt,手动应用到main,关闭原 PR 并说明。
D. Monorepo 发布标签
标签作用域到包:git tag {package-name}-v{semver}(如 contextbricks-v2.1.0),避免 monorepo 中 v2.1.0 的歧义。
E. 先建 .gitignore 再初始化
新仓库在首次 git add 前先写 .gitignore(含 node_modules/、.wrangler/、dist/、.env 等)。若 node_modules 已被跟踪:git rm -r --cached node_modules/ 后提交移除。
F. 私有仓库许可证审计
发布前用 gh repo view --json visibility 检查可见性;若为 PRIVATE,确保 LICENSE 含专有声明、package.json 含 "license":"UNLICENSED" 与 "private":true、README 无「欢迎贡献」。
适用边界与注意点
- 不适用于非常规的底层 Git 操作(如恢复误删提交),需结合具体情形判断。
- 技能给出步骤,不替代对仓库状态的真实检查。执行前请确认当前分支、远程跟踪状态和工作区是否干净。
- 冲突解决中「架构分歧」的判断需要人介入,技能提供分支策略和代码提取工具,但最终取舍取决于项目实际情况。
使用场景
- 准备提 PR 前,分支已提交多个改动,需要按规范生成 PR 标题、描述和测试计划。
- 本地和远程堆积了大量已合并分支,需要在切到 main 后安全删除且不误删未合并分支。
- 合并 main 时出现冲突,需要区分区域冲突和架构冲突,决定继续 merge 还是 rebase。
- Monorepo 里多个包要发布,需要给标签加包名作用域,避免 v2.1.0 这类歧义。
适合人员
- 多人协作项目的开发者,需要在提 PR 前按规范整理改动内容和描述。
- 长期维护仓库的维护者,需要在迭代后安全清理已合并分支、保持分支列表整洁。
- Monorepo 的发布负责人,需要给各包打作用域标签、保证发布记录清晰可追溯。
- 刚建好新仓库的工程师,需要在首次提交前补上 .gitignore、防止敏感文件入库。