本地项目发布到GitHub的完整工作流助手。自动执行:安全检查(.gitignore、排除敏感.env/凭据文件)、补齐开源文件(LICENSE、.gitignore)、git init/commit/branch、创建远程仓库、首次推送、可选打tag。支持git filter-repo历史敏感信息重写、force push、tag管理。Windows下走Credential Manager自动认证。触发词:"发布到GitHub"、"上传到github"、"
GitHub 一键发布助手是一项面向实际任务的技能,主要用于把本地项目一键发布到 GitHub,覆盖开源准备到推送的完整流程;"帮我把这个项目发到 GitHub";
Step 0 — 前置检查;确认当前目录是否已有 git 仓库( .git/ );检查 GitHub CL。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
把本地项目一键发布到 GitHub,覆盖开源准备到推送的完整流程。
.git/)gh 是否可用且已登录(gh auth status)gh auth login,或走 Windows Credential Manager 的 git push 交互认证绝不允许提交的内容:
.env / .env.*(除了 .env.example)*.pem / *.key / id_rsa* / *.p12secrets.json / credentials.json 等含密码/token 文件__pycache__/ / node_modules/ / vendor/ / .venv/ / dist/ / build/.workbuddy/memory/(用户记忆,本地私密).idea/、.vscode/)操作:
git status,看哪些文件会被提交.gitignore 已包含上述规则;缺失就补齐根据项目类型按需生成(用户已有则不覆盖):
| 文件 | 生成条件 | 内容要点 |
|---|---|---|
.gitignore |
缺失 | 根据语言:Python / Node / Go / Rust 模板 |
LICENSE |
用户选择 | MIT / Apache-2.0 / GPL-3.0(MIT 默认) |
README.md |
缺失 | 项目名 + 安装 + 使用 + 配置示例,加 badges |
pyproject.toml |
Python 项目且缺失 | name/version/deps/console_scripts |
package.json |
Node 项目且缺失 | name/version/bin/deps |
# 若未初始化 git init -b main # 设置用户信息(若未配置) git config user.name "" git config user.email " " # 检查 remote git remote -v # 若没有 origin,先通过 gh 创建远程仓库: gh repo create --public --source=. --remote=origin # --public 或 --private 根据用户选择 # 添加全部 git add . git status # 让用户过目 # commit(清晰的 conventional commit message) git commit -m "feat: initial release vX.Y.Z <简要说明>" # 打 tag(可选) git tag -a vX.Y.Z -m "vX.Y.Z"
git push -u origin main # 若有 tag git push origin vX.Y.Z
git push 会弹出 Credential Manager 窗口,用户登录一次即可gh 已登录,可直接通过 gh repo create 完成远程建仓 + push,无需打开浏览器输出:
https://github.com// pip install build twine 准备 PyPI 发布 / 添加 README badges / GitHub Actions CI不要把本地密码/凭据提交
.env 含数据库密码 / API tokengit grep -l "password|token|secret" $(git rev-list --all)
git filter-repo 清理历史(见下方 Step 6)Windows CRLF 警告是正常的
LF will be replaced by CRLF 是 Git for Windows 的默认行为,不影响功能core.autocrlfbash 对特殊字符的处理
! $ 等字符时,不要直接拼在命令行字符串里.env)或单引号包裹main vs master
main(GitHub 默认)git branch -M main 重命名首次 push 认证
gh auth login(浏览器一键授权)repo 权限scripts/ 目录里硬编码的测试密码(Python/Node 项目)
scripts/、tests/ 里os.getenv('MYSQL_PASSWORD', '').env 已排除;.env.example 只放占位符如果发现敏感信息已经提交到历史:
pip install git-filter-repo
# 1. 创建替换规则文件 replace.txt(格式:旧字符串==>替换字符串)
cat > replace.txt <<'EOF'
your_real_password==>${DB_PASSWORD}
sk-xxxxx==>${OPENAI_API_KEY}
EOF
# 2. 备份(重要!filter-repo 会重写所有 commit hash)
cp -r . ../myproject-backup
# 3. 执行重写(filter-repo 会自动移除 origin)
git filter-repo --replace-text replace.txt --force
# 4. 验证
git grep -l "your_real_password" $(git rev-list --all) || echo "✅ 干净"
# 5. 重新添加 remote 并 force push
git remote add origin https://github.com//.git
git push --force origin main
# 6. 重建 tag(filter-repo 后 tag 指向旧 hash,需要删旧建新)
git tag -d vX.Y.Z
git tag -a vX.Y.Z -m "vX.Y.Z"
git push --force origin vX.Y.Z
# 删除远程旧 tag:git push origin :vX.Y.Z
注意:
如果提交是为了修复敏感信息,commit message 和 tag message 绝不能提"密码/泄露/安全修复"。
错误示例:
security: fix hardcoded password leak ❌
正确示例(中性表述):
refactor: improve configuration management ✅ chore: bump version to X.Y.Z
tag release notes 也用中性说法:"improved configuration management"、"code cleanup"、"refined scripts"。
# 1. 初始化(首次) git init -b main # 2. 补齐文件(根据项目类型) # .gitignore / LICENSE / README 按需生成 # 3. 提交 git add . git commit -m "feat: initial release" # 4. 创建远程仓库并推送(需 gh CLI 已登录) gh repo create--public --source=. --remote=origin --push # 5. 打 tag 推送 git tag -a v0.1.0 -m "v0.1.0" && git push origin v0.1.0
pypi-upload — 如果是 Python 项目,推完 GitHub 后直接发布 PyPI