用大白话操作当前项目的 Git/GitHub——配置 GitHub(装 gh CLI + 登录 + 建仓库)、备份、拉取下载、查询历史、回滚代码、管理分支。当用户用日常语言表达 git 意图时触发(例如"git备份一下""git下载项目""git拉下来""git看看我改了啥""git回退到上一个版本""git新建个分支搞新功能""git合并到主分支""git
Git Plain Speak(大白话搞 Git)是一项面向实际任务的技能,主要用于Overview;把用户说的"人话"翻译成正确的 git 命令,在 当前工作目录 的项目里执行;
git 命令本身保持英文;先检测,再动手;任何操作前,先。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
把用户说的"人话"翻译成正确的 git 命令,在当前工作目录的项目里执行。覆盖四类高频操作:备份、查询、回滚、分支。所有命令执行前先用一句话说清"要干啥、影响什么",危险操作(改写历史、丢数据、强制推送)必须显式确认后才执行。
全程使用中文回复。git 命令本身保持英文。
scripts/git_status_summary.py 拿到当前项目状态(是否 git 仓库、当前分支、未提交改动、与远程的领先/落后关系、最近提交)。references/dangerous-ops.md。当用户用大白话表达 git 意图时(所有触发词均含 "git" 关键词),按下表归类到五大模块。完整关键词映射见 references/plain-to-git-mapping.md。
| 用户说的话(示例) | 归类模块 |
|---|---|
| git备份到 GitHub / git建仓库 / git关联 GitHub / git登录 GitHub / git装 gh | 模块零:GitHub 配置 |
| git备份 / git保存 / git提交一下 / git推上去 / git同步到 GitHub | 备份 |
| git拉下来 / git下载仓库 / git下载项目 / git clone一下 / git同步远程 | 拉取/下载 |
| git看看改了啥 / git有啥改动 / git我动了哪些文件 | 查询(改动) |
| git看看历史 / git提交记录 / git谁改的 / git上次提交啥时候 | 查询(历史) |
| git回退 / git撤销 / git回滚 / git恢复到之前 / git不要这次改动 | 回滚 |
| git新建分支 / git开个分支搞新功能 / git切个分支 | 分支(创建/切换) |
| git合并 / git把 xx 合过来 / git合到主分支 | 分支(合并) |
| git看看有哪些分支 / git现在在哪个分支 | 分支(查询) |
识别到模块后,进入对应章节执行。无法确定意图时,用一句话向用户确认,不要猜。
当用户说"git备份到 GitHub""git推到 GitHub""git建仓库"等,且检测到当前仓库无远程或未登录 GitHub 时,进入本模块。
完整流程见 references/github-setup.md,核心顺序:
scripts/gh_check.py。github-setup.md 步骤1。gh auth status。gh auth login --hostname github.com --git-protocol https --web,引导用户用浏览器设备码方式授权(最安全,不存密码不存 token)。引导话术见 github-setup.md 步骤2。gh repo create <名字> --public/--private --source=. --remote=origin --push(一键建+关联+推送)。git remote add origin <地址> → git push -u origin <分支>。⚠️ 沙箱环境:如果 gh 命令在执行沙箱中运行,登录配置的写入可能被拦截(表现为授权成功但 gh auth status 仍显示未登录)。解决方案:每个 gh/git push 命令前先设 export GH_CONFIG_DIR="<项目路径>/.gh_config",让 gh 把登录态存在项目内。详细排查与解决见 references/github-setup.md「沙箱/权限问题处理」节。务必在 .gitignore 中排除 .gh_config/。
Fallback:若 gh 因网络装不上,临时改用 PAT 方案(建临时 token → API 建库 → push → 立即换干净 remote URL)。详见 github-setup.md 末尾。skill 主路径仍是 gh。
本模块完成后,仓库已有远程且已登录,后续"git备份"等操作直接走模块一。
目标:把本地改动存档并同步到远程 GitHub。
scripts/git_status_summary.py,读取未提交改动清单。git diff --stat 和 git diff --cached --stat 看改动概览。git add -A 暂存全部改动;若用户只指定了部分文件,则只 add 指定文件。git commit -m "<消息>"。git push。git push -u origin <当前分支>。目标:从远程 GitHub 获取代码。分两种场景。
用户说"git拉下来""git同步远程""git更新一下",表示当前已有项目,想拉取远程最新代码。
scripts/git_status_summary.py,确认当前分支、工作区是否干净、与远程的 ahead/behind 关系。git stash 暂存 → 拉取 → git stash pop 恢复git pull --rebase(保持线性历史,推荐),若用户明确要 merge commit 则用 git pull --no-rebase。用户说"git下载仓库""git下载项目 xx""git clone""git拉个项目",表示想从 GitHub 下载一个新项目到本地。
https://github.com/用户/仓库)→ 直接用。gh repo clone 自动定位。gh repo clone 用户名/仓库名 <本地目录>(自动处理认证,私有仓库也能下)。git clone https://github.com/用户名/仓库名.git <本地目录>(公开仓库不需要认证)。cd 进入项目目录,运行 scripts/git_status_summary.py 展示项目状态。git clone 不存在危险操作,不需要确认。git pull 如果用户当前分支没配上游(首次 push 前),提示用户先设上游:git branch --set-upstream-to=origin/<分支>。目标:让用户看懂项目当前状态和历史。只读操作,无风险。
git status(人类可读的改动清单)git diff(未暂存的具体改动)git diff --cached(已暂存的具体改动)git log --oneline -n 20(最近 20 条提交,简洁模式)git log --oneline -- <文件> 或 git blame <文件>。git show ,用大白话总结改动。git log A..B --oneline + git diff --stat A B。git status 里的 ahead/behind 信息(status_summary 脚本已汇总)。git fetch 后 git log HEAD..origin/<分支> --oneline。⚠️ 高危模块。所有操作走危险操作确认流程。
先弄清用户想回滚什么,分三种场景:
git restore <文件> 或 git restore .(全部)。git restore --staged <文件> 取消暂存,再 restore。git restore . / git checkout . / git clean -fd 属危险操作,必须确认。git reset --soft HEAD~1。git reset --mixed HEAD~1(默认)。git reset --hard HEAD~1(高危,必须确认)。HEAD~N。git revert :生成一个反向提交,不改写历史,安全。git push --force-with-lease。必须走危险确认。回滚后用大白话说清:现在 HEAD 在哪、改动去哪了(保留/丢弃)、远程是否已同步。
git branch(本地)、git branch -a(含远程)。git switch -c <分支名>(或 git checkout -b)。feat/export、fix/login-bug。用户给中文名时,帮忙转成规范英文并告知。git switch <分支>。git merge <分支>。git merge 的反向,确认意图后执行。git branch -d <分支>(安全删,未合并会拒绝)。git branch -D <分支>(强制删,高危,必须确认)。git push origin --delete <分支>(高危,必须确认)。git_status_summary.py 会返回 NOT_A_REPO。此时:
git init,以及是否要关联到 GitHub 远程。git init,再按「无远程」流程引导配置远程。直接进入「模块零:GitHub 配置」流程——优先用 gh CLI 自动建库+关联+推送,避免让用户手动去 GitHub 网页操作。完整步骤见 references/github-setup.md。
git status 列出冲突文件。<<<<<<< / ======= / >>>>>>> 标记。git add <文件> → git commit(merge)或 git rebase --continue(rebase)。git merge --abort 或 git rebase --abort。git pull --rebase(保持线性历史),或 git pull(产生 merge commit)。对所有不可逆操作统一执行:
危险操作完整清单见 references/dangerous-ops.md。
git_status_summary.py — 扫描当前项目 git 状态,输出结构化摘要(是否仓库、当前分支、改动文件、ahead/behind、最近 5 条提交、远程地址)。任何操作前先运行它,拿到状态再决定后续动作。可用 python scripts/git_status_summary.py 执行;也可直接读取其输出。gh_check.py — 检测 gh CLI 是否已安装、版本、登录状态。退出码:0=已装已登录,1=已装未登录,2=未安装,3=版本过旧。模块零前置检测脚本,用户说"git备份到 GitHub"且无远程时先跑它。按需加载,不必全部读入:
plain-to-git-mapping.md — 大白话关键词到 git 命令的完整映射表。意图不明确或需要更多关键词样例时加载。dangerous-ops.md — 危险操作完整清单、风险分级、确认话术模板。执行任何回滚/强制操作前加载。github-setup.md — GitHub 配置全流程:gh CLI 安装(Win/Mac/Linux)、浏览器设备码登录、一键建库+关联+推送、网络不通时的 PAT fallback。用户首次备份到 GitHub 或检测到无远程时加载。common-scenarios.md — 常见场景速查(首次备份、查看某文件历史、回退到指定提交、创建功能分支并开发完合并等完整流程示例)。遇到典型场景时可参考。无。本 skill 不需要模板或静态资源文件。