Skip to content

About

把本地项目发布到 GitHub 的完整流程:开源前体检、署名与凭据配置、建仓库、推送、验证、清理。含全部踩坑清单。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

github-publish

把本地项目发布到 GitHub 的完整流程——开源前体检、署名与凭据配置、建仓库、推送、验证、清理。

这是一份给 AI 助手用的工作流技能(Skill),也可以当 checklist 自己照着做。

为什么需要它

发布一个项目到 GitHub,看起来就几条命令,实际一脚一个坑:

  • 设备授权页面死活打不开(网关拦了)
  • gh CLI 报权限不足
  • SSH 密钥生成失败(路径格式问题)
  • 推上去发现 commit 挂在错误的账号上
  • 强推失败,而令牌已经删了

这些坑每一个都要折腾十几分钟。这个技能把它们全部固化下来,一次走通。

用法

作为 WorkBuddy Skill

cp -r github-publish ~/.workbuddy/skills/

然后对助手说一句:「把这个项目发布到 GitHub」,它会自动加载并按流程执行。

作为检查清单

直接读 SKILL.md,照着做。每一步都有具体命令。

流程概览

0. 发布前体检(扫硬编码路径与敏感信息)
1. 环境检查(git / gh / SSH / 署名)
2. 确定署名(推荐 noreply 隐私邮箱)
3. 认证(SSH 推荐 / gh CLI / API 令牌)
4. 建仓库(网页或 API,auto_init 必须 false)
5. 本地提交
6. 推送(改写历史需 force)
7. 验证(核对提交信息、作者、归属账号)
8. 清理凭据(确认成功后)
9. 加 topic 标签

几条不能破的规矩

  1. 密码和令牌不进对话——存文件、读文件、用完删
  2. 凭据在确认推送成功之后才清理——提前删,失败就得重来
  3. 私钥永不外传——只给公钥
  4. 公开推送不可逆——推之前必须体检敏感信息

最容易踩的八个坑

坑 症状 解法
设备授权被拦 Bad Gateway / unexpected EOF 改 SSH 或 API
gh 权限不足 missing required scope 'read:org' 令牌加勾 read:org
SSH 路径格式 No such file or directory 用 C:/Users/...
force-with-lease stale info git fetch + --force
凭据删早了 推送失败却没了令牌 验证后再清理
记事本双后缀 找不到 token 文件 按 ghp_ 前缀搜
Python urllib 抽风 SSL: UNEXPECTED_EOF 改用 curl
bash 里 timeout 无效语法 别用 timeout 包命令

二次发布与一致性验证

第一次发布之后本地项目还在改,之后要把改动同步到已存在的仓库:

  • 先 diff 再合并,别整文件覆盖——开源副本常被改过(加了 README/LICENSE、路径泛化、顶部加了说明), 直接 cp 会把这些开源化处理冲掉。
  • 推完反向 diff 一次——脱敏改写往往做在开源副本上,源项目那份可能还是旧的 (结果就是:对外发布的是新规则,自己日常用的还是老规则)。规则性改动要回灌源项目。

验证分三层:

# 1. 工作树是否干净
git status --porcelain

# 2. 本地 HEAD vs 远端,逐文件 blob 哈希比对
git ls-tree -r HEAD
curl -s "https://api.github.com/repos/<owner>/<repo>/git/trees/<branch>?recursive=1"
# 只比对提交号会被「文件漏传」骗过,必须逐文件对 sha

# 3. 源项目 vs 开源副本,逐字节
diff -rq <开源副本> <源项目>   # 差异应只剩开源化包装本身

第三层若出现规则性差异(一边写"用 A"、另一边还是"用 B"),说明同步漏了,必须回灌。

一个关键机制

GitHub 拿 commit 邮箱匹配账号,跟显示名无关。

邮箱绑在哪个账号,commit 就归谁。所以多人协作或用多账号时,想指定归属,就用那个账号的 noreply 邮箱:ID+登录名@users.noreply.github.com。

适用

GitHub 为主,Gitee / GitLab 流程相同,仅域名和令牌页面不同。

许可

MIT,见 LICENSE。

About

把本地项目发布到 GitHub 的完整流程:开源前体检、署名与凭据配置、建仓库、推送、验证、清理。含全部踩坑清单。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors