Agent skill · software engineering · aiskillstore
git-push
一键推送项目到 GitHub。自动扫描大文件、生成 .gitignore、初始化 Git、创建仓库并推送。支持首次推送、日常更新、版本发布三种模式。当用户说"推到GitHub"、"推送到GitHub"、"git push"、"上传到GitHub"、"发版本"、"打release"、"/git-push"时触发。
Why this skill is useful
Adds an executable script for automating GitHub project pushes, including safety checks and .gitignore generation.
What it needs
Requires gh, git installed locally. Requires github account access. About 4k tokens when loaded. Last updated 2026-08-07. 405 stars on the source repository.
What this skill does
一键推送 GitHub 功能说明 把当前项目一键推送到 GitHub,覆盖完整生命周期: 首次推送 — 新项目从零到 GitHub 日常更新 — 改了文件,推一下(commit + push) 版本发布 — 打 tag + 创建 Release,可附带下载文件 核心原则:安全第一。宁可多问一句,不能把不该推的东西推上去。 --- 工作流程 第0步:环境检查 + 模式判断 依次检查前置条件,任一不满足就终止并给出指引: 1. git 是否安装 ❌ → 提示:brew install git,终止 ✅ → 继续 2. gh CLI 是否安装 ❌ → 提示:brew install gh,终止 ✅ → 继续 3. gh 是否已登录 GitHub 执行 gh auth status 检查 ❌ 未登录 → 提示:gh auth login,终止 ✅ 已登录 → 记录账号名,告诉用户"当前登录账号:[xxx]",继续 4. git 用户信息是否配置 执行 git config user.name 和 git config user.email 检查 ❌ 未配置 → 提示用户设置: 终止 ✅ 已配置 → 继续 5. 当前目录是否已是 git 仓库 → 决定走哪条路 --- 第1步:项目扫描 + .gitignore 生成 ⚠️ 铁律:.gitignore 必须在第一次 git add 之前就位。绝不能先提交再排除——Git 历史里的大文件删不干净,会导致仓库臃肿、推送失败。 1.1 扫描目录大小 用 du -sh 扫描所有顶级目录和文件,按大小排序。 大文件分级处理: 大小 处理方式 ------ ---------- >10MB 列出,逐个问用户"要推吗?" >50MB 额外警告"较大,推送会比较慢" 单文件 >100MB 必须排除,GitHub 硬限制,推不上去 展示格式(示例): 1.2 敏感内容扫描(仅公开仓库) 如果用户选了公开仓库,额外扫描: .env / .env. — 环境变量/密钥 secret / credential / token — 密钥文件 .pem / .key — 证书文件 memory/ / MEMORY.md — AI 工具记忆文件 任何看起来像私人内容的文件 列出建议排除项,让用户逐项确认。 1.3 生成或更新 .gitignore 如果不存在 .gitignore:基于扫描结果生成新文件。 如果已存在 .gitignore:读取现有内容,将新增排除项合并进去,展示差异让用户确认。不覆盖用户已有的规则。 基础模板: 展示给用户确认后写入文件。 --- 第2步:用户决策 1. 仓库名(默认:当前目录名) 2. 描述(一句话,可留空) 3. 公开 / 私有 公开 → 二次确认:"公开仓库所有人可见,确认 .gitignore 已排除敏感内容?" 不确认 → 回到第1.2步(敏感内容扫描)重新审查,完成后回到本步骤继续 4. 检查同名仓库 执行 gh repo view [账号]/[仓库名] 检查 ❌ 不存在 → 继续 ✅ 已存在 → 告诉用户,问: "换个名字" → 重新输入 "用这个已有仓库" → 跳过创建,直接关联 remote(记录仓库 URL 供第3步使用) "删掉重建" → 需用户二次确认 --- 第3步:推送 3A. 首次推送(新项目) 按以下顺序严格执行: 3B. 日常更新(已有仓库) 推送失败处理 错误 原因 处理 ------ ------ ------ rejected (fetch first) 或 non-fast-forward 远程有本地没有的提交 默认执行 git pull --rebase 后重试 仍然失败 / 远程有冲突 历史不兼容 问用户"是否强制覆盖远程?" ⚠️ 告知:"这将覆盖远程所有内容,仅在确认远程内容可以丢弃时使用"→ git push --force 超时/卡住 网络或仓库太大 检查仓库大小,建议排除大文件后重试 认证失败 token 过期 提示 gh auth login file exceeds 100MB 单文件超限 提示具体文件名,加入 .gitignore,重新提交推送 git add 或 git commit 失败 文件异常/配置缺失 显示错误信息,引导用户排查 --- 第4步:可选 — 版本发布(Release) 触发时机 首次推送后,主动问一次"需要打版本吗?" 日常更新后,不主动问(避免打扰) 用户主动说"发版本"、"打 release"、"打 tag" 流程 1. 确定版本号 2. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills aiskillstore/git-push