git-pushlisted
Install: claude install-skill aiskillstore/marketplace
# 一键推送 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` 检查
- ❌ 未配置 → 提示用户设置:
```
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
```
终止
- ✅ 已配置 → 继续
**5. 当前目录是否已是 git 仓库 → 决定走哪条路**
```
不是 git 仓库 → 【首次推送】从第1步开始
是 git 仓库,无 remote → "本地有 git 但没关联远程"
→ 先执行第1步的大文件扫描(确保安全)
→ 再跳到第2步关联远程
是 git 仓库,有 remote → 【已有仓库】进入模式选择:
├── "推日常更新" → 跳到第3B步(日常更新)
├── "发新版本" → 检查是否有未提交的变更
│ ├── 有变更 → 先走第3B步,再走第4步
│ └── 无变更 → 直接跳到第4步(只打 tag + Release)
└── "重新来"
→ ⚠️ 警告:"这将删除所有 Git 历史记录(包括所有提交、分支、tag),不可恢复。"
→ 用户二次确认后删除 .git,从第1步开始
```
---
### 第1步:项目扫描 + .gitignore 生成
> **⚠️ 铁律:.gitignore 必须在第一次 `git add` 之前就位。绝不能先提交再排除——Git 历史里的大文件删不干净,会导致仓库臃肿、推送失败。**
#### 1.1 扫描目录大小
用 `du -sh` 扫描所有顶级目录和文件,按大小排序。
**大文件分级处理:**
| 大小 | 处理方式 |
|------|----------|
| **>10MB** | 列出,逐个问用户"要推吗?" |
| **>50MB** | 额外警告"较大,推送会比较慢" |
| **单文件 >100MB** | **必须排除**,GitHub 硬限制,推不上去 |
**展示格式**(示例):
```
扫描发现以下内容超过 10MB:
1. 109MB slides/