[{"data":1,"prerenderedAt":574},["ShallowReactive",2],{"$fsm16afO6i0weLv9pDxhCOVdvrNivzzU7l8TrZtWMpRg":3,"$fc3Wdf5mibs6awOtfPkoiwVbv1rH8nV0KqeQLWZrtTwI":53},{"title":4,"description":5,"date":6,"category":7,"readTime":8,"tags":9,"content":17,"_excerpt":18,"_faqs":19,"id":50,"_path":51,"_format":52},"Vercel 部署被拦截 Deployment Blocked：Git 提交邮箱与 Vercel 账号不匹配的修复方案","Vercel 免费版（Hobby Plan）部署时出现 Deployment Blocked，提示 commit author did not have contributing access？本质原因是本地 Git 配置的 user.email 与绑定 Vercel 的 GitHub 账号邮箱不一致，被识别为未经授权的协作者。本文记录我第二次踩坑后的完整修复方案：检查 \u002F 修改 Git 邮箱配置、修正最近一次 commit 作者、强制推送触发重新部署，全程无需升级 Pro 付费版。","2026-09-16","开发工具","6 分钟",[10,11,12,13,14,15,16],"Vercel","Git","部署失败","邮箱配置","Deployment Blocked","Hobby Plan","commit author","\u003Ch1>Vercel 部署被拦截 Deployment Blocked：Git 提交邮箱与 Vercel 账号不匹配的修复方案\u003C\u002Fh1>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>核心结论\u003C\u002Fstrong>：Vercel Hobby 免费版部署时显示 \u003Ccode>Deployment Blocked\u003C\u002Fcode> + &quot;The commit author did not have contributing access to the project on Vercel&quot;，\u003Cstrong>本质是本地 Git \u003Ccode>user.email\u003C\u002Fcode> 与绑定该 Vercel 项目的 GitHub 账号邮箱不一致\u003C\u002Fstrong>——Vercel 把&quot;陌生邮箱的提交&quot;误判成未经授权的协作者。\u003Cstrong>前提\u003C\u002Fstrong>：你是项目仓库的所有者（或该邮箱对应账号是仓库协作者）。\u003Cstrong>修复不需要升级 Pro\u003C\u002Fstrong>，三步搞定：① \u003Ccode>git config user.email\u003C\u002Fcode> 改成绑定 Vercel 的 GitHub 邮箱；② \u003Ccode>git commit --amend --reset-author --no-edit\u003C\u002Fcode> 修正上次提交；③ \u003Ccode>git push origin main --force\u003C\u002Fcode> 强制重推触发重新部署。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cstrong>3 分钟摘要\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>报错关键词\u003C\u002Fstrong>：\u003Ccode>Deployment Blocked\u003C\u002Fcode> + \u003Ccode>commit author did not have contributing access\u003C\u002Fcode> + \u003Ccode>Hobby Plan does not support collaboration for private repositories\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>根因\u003C\u002Fstrong>：Git 提交者邮箱 ≠ Vercel 项目绑定的 GitHub 账号邮箱，被 Vercel 当成&quot;第三方账号提交&quot;\u003C\u002Fli>\n\u003Cli>\u003Cstrong>修复三步\u003C\u002Fstrong>：① 改 \u003Ccode>git config user.email\u003C\u002Fcode> → ② \u003Ccode>git commit --amend --reset-author\u003C\u002Fcode> → ③ \u003Ccode>git push --force\u003C\u002Fcode> 触发重部署\u003C\u002Fli>\n\u003Cli>\u003Cstrong>耗时\u003C\u002Fstrong>：1~3 分钟搞定，\u003Cstrong>不需要升级 Vercel Pro\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>预防\u003C\u002Fstrong>：写个脚本检查&quot;提交邮箱 == GitHub 主邮箱&quot;，每次 push 前自动校对\u003C\u002Fli>\n\u003Cli>\u003Cstrong>多账号场景\u003C\u002Fstrong>：公司项目与个人项目要分别设 \u003Ccode>user.email\u003C\u002Fcode>，避免全局污染\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>事故背景\u003C\u002Fstrong>：这是我\u003Cstrong>第二次\u003C\u002Fstrong>遇到这个问题。第一次是 2024 年给一个朋友的 Nuxt 项目部署时，提交后 Vercel 显示 Blocked，我以为是 GitHub 仓库权限出问题，瞎折腾了半小时才意识到是邮箱。第二次就是今天（2026-09-16）——给 FollowMe 博客加了 9 个 GitHub 开源项目文章的文章后，本地 \u003Ccode>git push\u003C\u002Fcode> 成功，Vercel 直接拒绝部署。这次不慌了，3 分钟搞定。本文把完整排查过程固化下来，下次再遇到直接照抄。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>一、事故还原：Deployment Blocked 错误长什么样\u003C\u002Fh2>\n\u003Cp>部署提交后，Vercel Dashboard 上立刻显示红色提示：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Deployment Blocked\nThe deployment was blocked because the commit author\ndid not have contributing access to the project on Vercel.\n\nThe Hobby Plan does not support collaboration for private\nrepositories. Please upgrade to Pro to add team members.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>界面状态：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Status\u003C\u002Fstrong>：\u003Ccode>Blocked\u003C\u002Fcode>（红色）\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Created by\u003C\u002Fstrong>：\u003Ccode>aen516954023\u003C\u002Fcode>（你的 Git 配置名，注意不是 GitHub 用户名）\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Source\u003C\u002Fstrong>：\u003Ccode>main\u003C\u002Fcode> 分支，commit message 是你刚才写的\u003C\u002Fli>\n\u003Cli>\u003Cstrong>没有构建日志\u003C\u002Fstrong>：因为根本没进入构建阶段\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>最容易让人跑偏的两个细节：\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>&quot;Upgrade to Pro&quot; 按钮特别显眼\u003C\u002Fstrong>——Vercel 默认想把你引导到付费页\u003C\u002Fli>\n\u003Cli>\u003Cstrong>错误信息里没提&quot;邮箱&quot;\u003C\u002Fstrong>——只说&quot;did not have contributing access&quot;，第一次看会以为是 GitHub 权限问题\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>实际上 \u003Cstrong>99% 的情况都不是协作权限\u003C\u002Fstrong>，而是 Git 提交者邮箱对不上。\u003Cstrong>别急着升级 Pro\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>二、底层原因：Vercel 如何判断&quot;协作权限&quot;\u003C\u002Fh2>\n\u003Ch3>2.1 Vercel 的部署授权模型\u003C\u002Fh3>\n\u003Cp>Vercel 与 GitHub 集成后，部署授权按以下顺序判断：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>优先级\u003C\u002Fth>\n\u003Cth>判断维度\u003C\u002Fth>\n\u003Cth>通过条件\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>①\u003C\u002Ftd>\n\u003Ctd>GitHub 仓库所有者\u003C\u002Ftd>\n\u003Ctd>提交者 GitHub 账号 == 仓库 Owner\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>②\u003C\u002Ftd>\n\u003Ctd>GitHub 仓库协作者\u003C\u002Ftd>\n\u003Ctd>提交者在仓库 Collaborators 列表中\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>③\u003C\u002Ftd>\n\u003Ctd>GitHub 组织成员\u003C\u002Ftd>\n\u003Ctd>Vercel 项目绑定的 GitHub Org 内成员\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>④\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>提交邮箱匹配\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>commit author email 与绑定的 GitHub 账号主邮箱一致\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Hobby Plan\u003C\u002Fstrong> 只支持前三条，且仅限 Owner 自己的提交。\u003Cstrong>Pro Plan\u003C\u002Fstrong> 才允许协作者单独部署。\u003C\u002Fp>\n\u003Ch3>2.2 为什么&quot;邮箱匹配&quot;能影响部署结果\u003C\u002Fh3>\n\u003Cp>Vercel 拿到 commit 后，会做以下校验：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">commit.author.email\n        ↓\n查 GitHub API：哪个账号绑定了这个邮箱？\n        ↓\n该 GitHub 账号是否在仓库 Owner \u002F Collaborators \u002F Org 成员名单里？\n        ↓\n是 → 通过；否 → Blocked\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>关键点\u003C\u002Fstrong>：Git \u003Ccode>user.email\u003C\u002Fcode> 是你自己在本地随意配的字符串，\u003Cstrong>不会自动同步到 GitHub 账号\u003C\u002Fstrong>。如果你用了 \u003Ccode>aen516954023@xxx.com\u003C\u002Fcode>，但你的 GitHub 主邮箱是 \u003Ccode>me@gmail.com\u003C\u002Fcode>——Vercel 查无此人，直接 Block。\u003C\u002Fp>\n\u003Ch3>2.3 常见踩坑场景\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>场景\u003C\u002Fth>\n\u003Cth>触发原因\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Cstrong>多台电脑切换\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>A 电脑配了公司邮箱，B 电脑没改直接提交\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>新装系统\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>重装后没配 \u003Ccode>user.email\u003C\u002Fcode>，Git 用系统用户名拼出来一个\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>clone 别人的项目\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>项目里 \u003Ccode>.git\u002Fconfig\u003C\u002Fcode> 没有 \u003Ccode>user.email\u003C\u002Fcode>，沿用全局错误配置\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>临时改邮箱接外包\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>接外包时设了一个邮箱，过后忘了改回\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>新员工入职\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>旧员工的电脑被新员工用，user.email 没改\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Chr>\n\u003Ch2>三、修复方案：完整步骤（亲测 3 分钟）\u003C\u002Fh2>\n\u003Ch3>第一步：检查当前 Git 邮箱配置\u003C\u002Fh3>\n\u003Cp>打开项目根目录的终端：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 查看当前仓库的配置\ngit config user.email\ngit config user.name\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>你会看到\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">aen516954023@users.noreply.github.com    ← 错的\naen516954023                              ← 错的\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>对照你的 GitHub 邮箱\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>GitHub → 右上角头像 → \u003Cstrong>Settings\u003C\u002Fstrong> → \u003Cstrong>Emails\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>找到 \u003Cstrong>Primary email\u003C\u002Fstrong>（主邮箱）\u003C\u002Fli>\n\u003Cli>这才是你 Vercel 绑定的 GitHub 账号对应的邮箱\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>第二步：把邮箱改成 GitHub 主邮箱\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 仅修改当前仓库（推荐）\ngit config user.email &quot;your-github-primary@example.com&quot;\ngit config user.name &quot;Your GitHub Username&quot;\n\n# 或者修改全局配置（影响所有项目）\ngit config --global user.email &quot;your-github-primary@example.com&quot;\ngit config --global user.name &quot;Your GitHub Username&quot;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>💡 \u003Cstrong>GitHub 提供 noreply 邮箱\u003C\u002Fstrong>：如果你想隐藏真实邮箱，可以用 GitHub 提供的 \u003Ccode>ID+username@users.noreply.github.com\u003C\u002Fcode> 形式。这种邮箱也能被 Vercel 识别为&quot;绑定的 GitHub 账号&quot;。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cstrong>改完后立即验证\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">git config user.email\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>应该输出你刚才设置的邮箱。\u003C\u002Fp>\n\u003Ch3>第三步：修正最近一次 commit 的作者信息\u003C\u002Fh3>\n\u003Cp>光改 \u003Ccode>user.email\u003C\u002Fcode> 还不够——\u003Cstrong>上一次 commit 的作者信息已经写死成旧的错误邮箱\u003C\u002Fstrong>了。需要 amend：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 修正上一次 commit（自动使用刚改的邮箱 + 用户名）\ngit commit --amend --reset-author --no-edit\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>参数说明：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>参数\u003C\u002Fth>\n\u003Cth>作用\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>--amend\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>修改最近一次 commit\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--reset-author\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>把作者信息重置为当前 \u003Ccode>user.name\u003C\u002Fcode> + \u003Ccode>user.email\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-edit\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>保留 commit message 不变\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>验证 commit 作者已更新\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">git log -1 --format=&#39;%an &lt;%ae&gt;&#39;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>输出应该是你新设置的姓名 + 邮箱。\u003C\u002Fp>\n\u003Ch3>第四步：强制推送到 GitHub 触发重新部署\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">git push origin main --force\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>⚠️ \u003Ccode>--force\u003C\u002Fcode> 会覆盖远程的 commit。如果这个分支只有你自己用，\u003Cstrong>没问题\u003C\u002Fstrong>；如果是多人协作分支，先 \u003Ccode>git pull --rebase\u003C\u002Fcode> 再 push，避免覆盖别人的提交。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>推送成功后，回到 Vercel Dashboard：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>几秒钟内会出现新的 Deployment\u003C\u002Fli>\n\u003Cli>这次 \u003Cstrong>Status\u003C\u002Fstrong> 显示 \u003Cstrong>Building\u003C\u002Fstrong> → \u003Cstrong>Ready\u003C\u002Fstrong>（不再是 Blocked）\u003C\u002Fli>\n\u003Cli>如果还是 Blocked → 看下文&quot;四、避坑指南&quot;\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch2>四、避坑指南：进阶排查清单\u003C\u002Fh2>\n\u003Cp>如果按上面三步操作后\u003Cstrong>仍然 Blocked\u003C\u002Fstrong>，按下面顺序排查。\u003C\u002Fp>\n\u003Ch3>4.1 确认 Vercel 绑定的 GitHub 账号就是项目所有者\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-text\">Vercel → Project Settings → Git\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>检查：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>GitHub Account\u003C\u002Fstrong>：是哪个账号？\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Repository\u003C\u002Fstrong>：是这个仓库吗？\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Production Branch\u003C\u002Fstrong>：\u003Ccode>main\u003C\u002Fcode> 对吗？\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>4.2 确认 GitHub 仓库的 Owner 是这个账号\u003C\u002Fh3>\n\u003Cp>进入 GitHub 仓库首页，看左上角 owner：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">https:\u002F\u002Fgithub.com\u002F&lt;owner&gt;\u002F&lt;repo&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>如果 \u003Ccode>&lt;owner&gt;\u003C\u002Fcode> ≠ Vercel 绑定的 GitHub 账号——这是另一个问题：要么换 Vercel 绑定账号，要么把仓库转移过去。\u003C\u002Fp>\n\u003Ch3>4.3 多账号场景：公司项目 vs 个人项目\u003C\u002Fh3>\n\u003Cp>很多开发者有多个 Git 账号：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>项目类型\u003C\u002Fth>\n\u003Cth>user.email\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>公司项目\u003C\u002Ftd>\n\u003Ctd>你的公司邮箱\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>个人项目\u003C\u002Ftd>\n\u003Ctd>你的 GitHub 主邮箱\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>外包项目\u003C\u002Ftd>\n\u003Ctd>客户指定的邮箱\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>开源贡献\u003C\u002Ftd>\n\u003Ctd>GitHub noreply 邮箱\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>最稳的做法\u003C\u002Fstrong>：用 \u003Ccode>includeIf\u003C\u002Fcode> 按目录自动切换。\u003C\u002Fp>\n\u003Cp>\u003Ccode>~\u002F.gitconfig\u003C\u002Fcode> 全局配置：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-ini\">[user]\n    name = Default Name\n    email = default@example.com\n\n[includeIf &quot;gitdir:~\u002Fwork\u002F&quot;]\n    path = ~\u002Fwork\u002F.gitconfig\n\n[includeIf &quot;gitdir:~\u002Fpersonal\u002F&quot;]\n    path = ~\u002Fpersonal\u002F.gitconfig\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>~\u002Fwork\u002F.gitconfig\u003C\u002Fcode>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-ini\">[user]\n    name = Work Name\n    email = work@company.com\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>~\u002Fpersonal\u002F.gitconfig\u003C\u002Fcode>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-ini\">[user]\n    name = Personal Name\n    email = me@gmail.com\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>这样 \u003Ccode>~\u002Fwork\u002F\u003C\u002Fcode> 下的项目自动用公司邮箱，\u003Ccode>~\u002Fpersonal\u002F\u003C\u002Fcode> 自动用个人邮箱。\u003Cstrong>永远不会再搞混\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Ch3>4.4 防止再次踩坑：pre-push 钩子\u003C\u002Fh3>\n\u003Cp>在 \u003Ccode>~\u002F.git_template\u002Fhooks\u002Fpre-push\u003C\u002Fcode> 写入：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">#!\u002Fusr\u002Fbin\u002Fenv bash\nEMAIL=$(git config user.email)\nGH_EMAIL=$(gh api user\u002Femails --jq &#39;.[] | select(.primary) | .email&#39; 2&gt;\u002Fdev\u002Fnull)\n\nif [ &quot;$EMAIL&quot; != &quot;$GH_EMAIL&quot; ]; then\n  echo &quot;❌ Git user.email ($EMAIL) ≠ GitHub primary email ($GH_EMAIL)&quot;\n  echo &quot;   修复：git config user.email \\&quot;$GH_EMAIL\\&quot;&quot;\n  exit 1\nfi\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>然后 \u003Ccode>git config --global init.templateDir ~\u002F.git_template\u003C\u002Fcode>——以后每个新 clone 的仓库都自动带上这个钩子。\u003C\u002Fp>\n\u003Ch3>4.5 误升级了 Pro 怎么办\u003C\u002Fh3>\n\u003Cp>如果你手抖点了 Upgrade to Pro：\u003C\u002Fp>\n\u003Col>\n\u003Cli>Vercel → Settings → Billing → \u003Cstrong>Downgrade to Hobby\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>等当前账单周期结束（按比例退款）\u003C\u002Fli>\n\u003Cli>把多余成员从项目里移除\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>不要重复升级再降级\u003C\u002Fstrong>——会触发人工审核，拖 1~2 周。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>五、关键点回顾\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>关键点\u003C\u002Fth>\n\u003Cth>错误做法\u003C\u002Fth>\n\u003Cth>正确做法\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>报错解读\u003C\u002Ftd>\n\u003Ctd>看到 &quot;Upgrade to Pro&quot; 就升级\u003C\u002Ftd>\n\u003Ctd>先查 \u003Ccode>git config user.email\u003C\u002Fcode> 是否匹配\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>邮箱配置\u003C\u002Ftd>\n\u003Ctd>沿用系统默认 \u002F 旧电脑的配置\u003C\u002Ftd>\n\u003Ctd>显式设 \u003Ccode>git config user.email &quot;&lt;GitHub 主邮箱&gt;&quot;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>amend 参数\u003C\u002Ftd>\n\u003Ctd>只用 \u003Ccode>--amend\u003C\u002Fcode> 不加 \u003Ccode>--reset-author\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>必须 \u003Ccode>--amend --reset-author --no-edit\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>推送方式\u003C\u002Ftd>\n\u003Ctd>用普通 \u003Ccode>git push\u003C\u002Fcode>（可能被拒绝）\u003C\u002Ftd>\n\u003Ctd>用 \u003Ccode>git push origin main --force\u003C\u002Fcode> 覆盖旧 commit\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>多账号管理\u003C\u002Ftd>\n\u003Ctd>所有项目用全局同一邮箱\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>~\u002F.gitconfig\u003C\u002Fcode> 用 \u003Ccode>includeIf\u003C\u002Fcode> 按目录切换\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>预防踩坑\u003C\u002Ftd>\n\u003Ctd>不设保护\u003C\u002Ftd>\n\u003Ctd>pre-push 钩子比对邮箱，错了直接阻断\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Vercel 升级\u003C\u002Ftd>\n\u003Ctd>误升级 Pro 解决邮箱问题\u003C\u002Ftd>\n\u003Ctd>Hobby Plan 完全够用，\u003Cstrong>免费版就能修\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>GitHub 权限\u003C\u002Ftd>\n\u003Ctd>误以为是仓库权限问题\u003C\u002Ftd>\n\u003Ctd>Vercel 报的是 commit author 邮箱，不是 GitHub 权限\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Chr>\n\u003Ch2>六、写在最后\u003C\u002Fh2>\n\u003Cp>这个问题的本质是：\u003Cstrong>Vercel 把 Git 提交者邮箱当成了 GitHub 账号识别符\u003C\u002Fstrong>，而 Git 邮箱又是本地随意可配的。两边一不匹配，就触发&quot;误判为协作者&quot;的拦截逻辑。\u003C\u002Fp>\n\u003Cp>它的设计本意是好的——\u003Cstrong>防止有人拿到 Vercel 部署权限后，绕过 GitHub 直接 push 别人的仓库\u003C\u002Fstrong>。但对个人开发者来说，每次换电脑、接外包、新员工入职都可能踩。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>最稳妥的解决方案\u003C\u002Fstrong>是：\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>现在就检查\u003C\u002Fstrong> \u003Ccode>git config --global user.email\u003C\u002Fcode> 是否是你的 GitHub 主邮箱\u003C\u002Fli>\n\u003Cli>\u003Cstrong>配 pre-push 钩子\u003C\u002Fstrong>，push 前自动校验\u003C\u002Fli>\n\u003Cli>\u003Cstrong>多账号用 \u003Ccode>includeIf\u003C\u002Fcode>\u003C\u002Fstrong> 按目录自动切换\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>把这三步做了，下次再遇到这个报错，\u003Cstrong>30 秒内就能解决\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>工具的报错信息是设计给&quot;通才&quot;的，但运维经验是设计给&quot;踩过坑的人&quot;的。\u003Cstrong>踩一次，记一次，分享一次\u003C\u002Fstrong>——这才是开发者应该有的复利。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>常见问题 FAQ\u003C\u002Fh2>\n\u003Ch3>Vercel 部署显示 Deployment Blocked 一定是邮箱问题吗？\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>90% 是\u003C\u002Fstrong>，剩下 10% 是：① Vercel 项目绑定的 GitHub 账号错了；② GitHub 仓库被转移给组织；③ 仓库设了 GitHub App 限制（Branch Protection）。\u003Cstrong>先查邮箱，再查其他\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Ch3>一定要升级 Vercel Pro 才能解决吗？\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>不需要\u003C\u002Fstrong>。Hobby Plan 完全支持个人仓库部署。&quot;Upgrade to Pro&quot; 只是 Vercel 的引导按钮，\u003Cstrong>和报错原因无关\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Ch3>git commit --amend 之后旧的 commit 还在吗？\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>本地被替换，远程需要 \u003Ccode>--force\u003C\u002Fcode> 覆盖\u003C\u002Fstrong>。本地 commit hash 会变（因为作者信息变了），但 commit message 保持不变。\u003Cstrong>多人协作分支慎用 \u003Ccode>--force\u003C\u002Fcode>\u003C\u002Fstrong>，单人分支没问题。\u003C\u002Fp>\n\u003Ch3>多个 GitHub 账号怎么管理邮箱？\u003C\u002Fh3>\n\u003Cp>用 \u003Ccode>~\u002F.gitconfig\u003C\u002Fcode> 的 \u003Ccode>[includeIf &quot;gitdir:...&quot;]\u003C\u002Fcode> 按目录切换：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-ini\">[includeIf &quot;gitdir:~\u002Fwork\u002F&quot;]\n    path = ~\u002Fwork\u002F.gitconfig\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>每个目录下放自己的 \u003Ccode>.gitconfig\u003C\u002Fcode> 单独配 user.email。详细配置见文章第四节。\u003C\u002Fp>\n\u003Ch3>GitHub noreply 邮箱（\u003Ca href=\"mailto:xxx@users.noreply.github.com\">xxx@users.noreply.github.com\u003C\u002Fa>）能用吗？\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>能\u003C\u002Fstrong>，而且推荐。这种邮箱是 GitHub 提供的隐私邮箱，\u003Cstrong>绑定的就是你的 GitHub 账号\u003C\u002Fstrong>，Vercel 能正确识别。在 GitHub Settings → Emails 里勾选 &quot;Keep my email addresses private&quot; 即可启用。\u003C\u002Fp>\n\u003Ch3>我已经升级 Pro 了，能降回 Hobby 吗？\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>能\u003C\u002Fstrong>。Vercel → Settings → Billing → Downgrade to Hobby，等当前账单周期结束按比例退款。\u003Cstrong>不要重复升降级\u003C\u002Fstrong>——会触发人工审核。\u003C\u002Fp>\n\u003Ch3>强制推送会影响 Vercel 的部署历史吗？\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>不影响\u003C\u002Fstrong>。Vercel 部署历史是基于 GitHub 上的 commit，强制推送只是替换了最近一次 commit，部署历史里的旧记录保留。新的 commit 会触发新的部署，覆盖 Blocked 的那条。\u003C\u002Fp>\n\u003Ch3>怎么确认 Git 邮箱是否和 GitHub 主邮箱一致？\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">git config user.email                                # 本地 Git 邮箱\ngh api user\u002Femails --jq &#39;.[] | select(.primary) | .email&#39;   # GitHub 主邮箱（需要 gh CLI）\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>两个邮箱完全一致就没问题。也可以直接去 GitHub → Settings → Emails 对照。\u003C\u002Fp>\n\u003Ch3>公司项目用公司邮箱提交，会被 Vercel 拦截吗？\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>会\u003C\u002Fstrong>，如果你绑定的 Vercel 是个人 GitHub 账号。\u003Cstrong>解决方法\u003C\u002Fstrong>：要么把仓库转移到公司组织、再用 Vercel 绑定组织账号；要么在 \u003Ccode>~\u002F.gitconfig\u003C\u002Fcode> 给公司项目目录单独配 \u003Ccode>includeIf\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Ch3>还有其他原因会导致 Deployment Blocked 吗？\u003C\u002Fh3>\n\u003Cp>有，少数情况：① GitHub 仓库设了 Branch Protection 但不允许 force push 触发 Vercel webhook；② Vercel 项目的 Git Integration Token 过期（Vercel → Settings → Git → Disconnect → Reconnect）；③ GitHub 服务异常（看 \u003Ca href=\"https:\u002F\u002Fwww.githubstatus.com\u002F\">githubstatus.com\u003C\u002Fa>）。按文章第四节顺序排查即可。\u003C\u002Fp>\n\u003Chr>\n\u003Cblockquote>\n\u003Cp>本文只做技术方案记录，不构成 Vercel 计费 \u002F GitHub 账号迁移建议。强制推送前请确认分支为单人使用，避免覆盖他人提交。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n","报错关键词：Deployment Blocked + commit author did not have contributing access + Hobby Plan does not support collaboration for private repositories 根因：Git ",[20,23,26,29,32,35,38,41,44,47],{"question":21,"answer":22},"Vercel 部署显示 Deployment Blocked 一定是邮箱问题吗？","90% 是，剩下 10% 是：① Vercel 项目绑定的 GitHub 账号错了；② GitHub 仓库被转移给组织；③ 仓库设了 GitHub App 限制（Branch Protection）。先查邮箱，再查其他。",{"question":24,"answer":25},"一定要升级 Vercel Pro 才能解决吗？","不需要。Hobby Plan 完全支持个人仓库部署。\"Upgrade to Pro\" 只是 Vercel 的引导按钮，和报错原因无关。",{"question":27,"answer":28},"git commit --amend 之后旧的 commit 还在吗？","本地被替换，远程需要 --force 覆盖。本地 commit hash 会变（因为作者信息变了），但 commit message 保持不变。多人协作分支慎用 --force，单人分支没问题。",{"question":30,"answer":31},"多个 GitHub 账号怎么管理邮箱？","用 ~\u002F.gitconfig 的 [includeIf \"gitdir:...\"] 按目录切换：\n``ini\n[includeIf \"gitdir:~\u002Fwork\u002F\"]\n    path = ~\u002Fwork\u002F.gitconfig\n`\n每个目录下放自己的 .gitconfig` 单独配 user.email。详细配置见文章第四节。",{"question":33,"answer":34},"GitHub noreply 邮箱（xxx@users.noreply.github.com）能用吗？","能，而且推荐。这种邮箱是 GitHub 提供的隐私邮箱，绑定的就是你的 GitHub 账号，Vercel 能正确识别。在 GitHub Settings → Emails 里勾选 \"Keep my email addresses private\" 即可启用。",{"question":36,"answer":37},"我已经升级 Pro 了，能降回 Hobby 吗？","能。Vercel → Settings → Billing → Downgrade to Hobby，等当前账单周期结束按比例退款。不要重复升降级——会触发人工审核。",{"question":39,"answer":40},"强制推送会影响 Vercel 的部署历史吗？","不影响。Vercel 部署历史是基于 GitHub 上的 commit，强制推送只是替换了最近一次 commit，部署历史里的旧记录保留。新的 commit 会触发新的部署，覆盖 Blocked 的那条。",{"question":42,"answer":43},"怎么确认 Git 邮箱是否和 GitHub 主邮箱一致？","``bash\ngit config user.email                                # 本地 Git 邮箱\ngh api user\u002Femails --jq '.[] | select(.primary) | .email'   # GitHub 主邮箱（需要 gh CLI）\n``\n两个邮箱完全一致就没问题。也可以直接去 GitHub → Settings → Emails 对照。",{"question":45,"answer":46},"公司项目用公司邮箱提交，会被 Vercel 拦截吗？","会，如果你绑定的 Vercel 是个人 GitHub 账号。解决方法：要么把仓库转移到公司组织、再用 Vercel 绑定组织账号；要么在 ~\u002F.gitconfig 给公司项目目录单独配 includeIf。",{"question":48,"answer":49},"还有其他原因会导致 Deployment Blocked 吗？","有，少数情况：① GitHub 仓库设了 Branch Protection 但不允许 force push 触发 Vercel webhook；② Vercel 项目的 Git Integration Token 过期（Vercel → Settings → Git → Disconnect → Reconnect）；③ GitHub 服务异常（看 githubstatus.com）。按文章第四节顺序排查即可。\n---\n> 本文只做技术方案记录，不构成 Vercel 计费 \u002F GitHub 账号迁移建议。强制推送前请确认分支为单人使用，避免覆盖他人提交。","vercel-deployment-blocked-commit-email-mismatch","\u002Fwriting\u002Fvercel-deployment-blocked-commit-email-mismatch","md",[54,72,74,92,110,128,144,162,177,195,211,223,238,255,270,287,303,321,337,354,366,381,395,412,426,441,456,472,488,500,514,527,544,556,564],{"id":55,"title":56,"date":6,"category":57,"readTime":58,"tags":59,"_excerpt":70,"_path":71},"github-9-free-open-source-projects","GitHub 上 9 个免费到癫狂的开源神器：AI 配音 \u002F 音乐生成 \u002F 自托管密码 \u002F 跨屏互传","网络工具","12 分钟",[60,61,62,63,64,65,66,67,68,69],"GitHub 开源","免费神器","自媒体副业","AI 配音","声音克隆","密码管理","量化交易","VoiceStudio","YuE","LocalSend","AI 配音 \u002F 音乐类（3 个）：VoiceStudio、YuE、VoxCPM——替代 ElevenLabs、Suno，做配音接单 \u002F 定制 BGM 情报 \u002F 交易类（3 个）：TradingAgents、Flowsint、RuView——替代 Bloomberg \u002F Wind \u002F Maltego ","\u002Fwriting\u002Fgithub-9-free-open-source-projects",{"id":50,"title":4,"date":6,"category":7,"readTime":8,"tags":73,"_excerpt":18,"_path":51},[10,11,12,13,14,15,16],{"id":75,"title":76,"date":77,"category":78,"readTime":58,"tags":79,"_excerpt":90,"_path":91},"trustpilot-product-selection-method","Trustpilot 差评选品法：从独立站出海差评里挖掘百万美金机会（附 AI 筛选提示词）","2026-09-10","创业人生",[80,81,82,83,84,85,86,87,88,89],"独立站出海","Trustpilot","选品方法","跨境电商","差评挖掘","AI选品","Facebook广告","Google广告","独立站运营","赚美金","放弃跟爆品：榜单是公开的，你看到的别人也看到，卷到最后比的是资金量和供应链——新手赢不了 差评才是金矿：Trustpilot 上差评基本来自真实购买（没人给自己刷差评），差评多说明订单量大（需求被验证），评分低说明履约差（你的机会） AI 批量筛选：用 Claude\u002FCodex 跑提示词，筛选\"差评","\u002Fwriting\u002Ftrustpilot-product-selection-method",{"id":93,"title":94,"date":95,"category":78,"readTime":96,"tags":97,"_excerpt":108,"_path":109},"awesome-indie-indie-developer-resources-guide","独立开发者赚钱资源大全：awesome-indie 精选 60+ 社区、书籍、工具（GitHub 开源）","2026-09-09","14 分钟",[98,99,100,101,102,103,104,105,106,107],"独立开发者","awesome-indie","资源合集","IndieHackers","副业赚钱","微型创业","被动收入","自举创业","SaaS","开发者赚钱","awesome-indie 是 GitHub 上的独立开发者赚钱资源合集（作者 mezod），覆盖社区、新闻通讯、博客播客、案例研究、会议、书籍、工具、课程 8 大主题，与\"独立开发者如何赚钱\"强相关 社区类先收藏：IndieHackers、Hacker News、r\u002FSideProject、Meg","\u002Fwriting\u002Fawesome-indie-indie-developer-resources-guide",{"id":111,"title":112,"date":95,"category":113,"readTime":114,"tags":115,"_excerpt":126,"_path":127},"investment-most-important-cycle-reflexivity-wisdom","巴菲特芒格力荐的 2 本书 + 索罗斯反身理论：投资最重要的 3 件事（周期 × 认知 × 顺势而为）","交易心得","16 分钟",[116,117,118,119,120,121,122,123,124,125],"投资智慧","周期","霍华德马克思","巴菲特","芒格","索罗斯","反身性","价值投资","趋势投资","顺势而为","3 本经典合一：《投资最重要的事》（霍华德·马克思）+《周期》（霍华德·马克思）+ 索罗斯\"反身性理论\"——巴菲特、芒格都强力推荐 核心母题：万物皆有周期——经济周期、信贷周期、产能周期、房地产周期、情绪周期……周期是自然之道，不可对抗，只能顺从 书 1《投资最重要的事》核心：价值投资是底盘，技术分","\u002Fwriting\u002Finvestment-most-important-cycle-reflexivity-wisdom",{"id":129,"title":130,"date":95,"category":113,"readTime":131,"tags":132,"_excerpt":142,"_path":143},"tiandao-permanent-business-investment-logic","从《天道》看永久值得投资的生意：生存、刺激与繁衍的底层逻辑","15 分钟",[133,134,135,136,137,138,139,123,140,141],"天道","投资逻辑","强势文化","底层需求","基因","丁元英","生意经","消费行业","遥远的救世主","天道的定义：永不改变、永远正的法则确，是世界的底层系统；在《天道》里对应\"神即道，道法自然，如来\" 需求的源头是六感：视觉需求远大于听觉、嗅觉、味觉——人对\"还原真实世界\"的视觉追求永无止境（480p→8K），所以显示行业永远有成长性 黑色家电 vs 白色家电案例：人对温差（24℃ vs 24.1℃","\u002Fwriting\u002Ftiandao-permanent-business-investment-logic",{"id":145,"title":146,"date":147,"category":148,"readTime":131,"tags":149,"_excerpt":160,"_path":161},"payoneer-cross-border-payment-guide","Payoneer派安盈使用全教程：跨境电商与WooCommerce独立站收款提现避坑指南，附万里汇连连PingPong对比","2026-09-03","工具教程",[150,151,152,153,154,155,156,157,158,159],"Payoneer","派安盈","跨境收款","WooCommerce独立站","PayPal提现","万里汇","连连国际","PingPong","Airwallex","Stripe","Payoneer 提供美\u002F欧\u002F英\u002F日\u002F港等地虚拟银行账户，是跨境电商收款的\"资金中枢\"，而非信用卡收单工具 平台卖家（亚马逊、TikTok Shop、Shopee 等）绑定 Payoneer 虚拟账户即可自动收款，这是它的主战场 WooCommerce 独立站有两种用法：达到企业主体和流水门槛可申请","\u002Fwriting\u002Fpayoneer-cross-border-payment-guide",{"id":163,"title":164,"date":165,"category":113,"readTime":131,"tags":166,"_excerpt":175,"_path":176},"eg-limit-up-cant-control-hand","乙二醇连续涨停我逆势做空浮亏120万，期货交易为什么管不住手，读懂损失厌恶才能跟上趋势","2026-09-02",[167,168,169,170,171,172,173,174],"乙二醇期货","管不住手","逆势做空","损失厌恶","处置效应","期货交易心理","趋势交易","仓位管理","美伊战争引爆原油市场，布伦特突破100美元，能化板块整体走强，乙二醇期货连续大涨后涨停至5800元上方 明知趋势向上，我却反手做空乙二醇，开盘即涨停，单笔浮亏120万 \"管不住手\"的根源是四个心理机制：损失厌恶、处置效应、沉没成本谬误、报复性交易 逆势单的本质不是\"做空\"，而是\"拒绝承认自己看错了\"","\u002Fwriting\u002Feg-limit-up-cant-control-hand",{"id":178,"title":179,"date":180,"category":113,"readTime":181,"tags":182,"_excerpt":193,"_path":194},"ancient-du-jing-15-wisdoms-futures-trading","《赌经》千年智慧 × 期货交易：15 大核心心法在现代金融交易中的应用","2026-09-01","18 分钟",[183,184,185,186,187,188,189,190,191,192],"期货交易","交易系统","交易心态","交易纪律","博弈论","资金管理","善赌者","风险控制","古代智慧","交易心法","千年博弈智慧的核心：\"天下万物都离不开博弈，人生无处不博弈\"——交易、转业、选择，本质都是下注 15 大心法的期货对应：(1) 天性 (2) 万物皆博 (3) 相济 (4) 养德 (5) 专一 (6) 休息与好习惯 (7) 静心 (8) 胜机 (9) 料情 (10) 善听 (11) 胜险 (12) ","\u002Fwriting\u002Fancient-du-jing-15-wisdoms-futures-trading",{"id":196,"title":197,"date":180,"category":78,"readTime":58,"tags":198,"_excerpt":209,"_path":210},"information-diet-munger-deep-thinking","每天写 600 字、拒绝短视频、读书走路：芒格的\"反碎片化\"哲学与 3 个实操方法",[199,200,201,202,203,204,205,206,207,208],"信息过载","碎片化","深度思考","查理芒格","注意力管理","个人成长","反碎片化","自我管理","信息减肥","写作","信息过载的本质是\"被动兴奋\"：你不是在\"获取信息\"，你是在被算法训练成\"刷下一条\"的条件反射机器 芒格的\"避免愚蠢\"哲学：\"反过来想，总是反过来想\"——聪明难学，愚蠢容易避免，关键是识别\"什么是会让自己变蠢的事\" 3 个反碎片化方法：(1) 信息减肥——限制信息源、少刷短视频；(2) 用输出取代输入","\u002Fwriting\u002Finformation-diet-munger-deep-thinking",{"id":212,"title":213,"date":214,"category":113,"readTime":96,"tags":215,"_excerpt":221,"_path":222},"futures-sell-art-trailing-stop-profit-take","期货交易\"会买的是徒弟，会卖的才是师傅\"：浮盈守不住的 4 个真相与 5 个系统化解决方案","2026-08-30",[183,216,217,218,185,184,174,186,219,220],"止盈","止损","移动止盈","浮盈","卖出策略","期货交易最隐蔽的失败模式：\"买对、趋势对，但赚不到钱甚至亏钱\"，90% 的交易者死在这里 浮盈 100w 变 70w 的 4 个真相：(1) 急速亏损来不及止损；(2) 高额手续费侵蚀利润；(3) 急速上涨拿不住提前下车；(4) 心理预期失衡导致操作变形 5 个系统化卖出解决方案：(1) 移动止盈（","\u002Fwriting\u002Ffutures-sell-art-trailing-stop-profit-take",{"id":224,"title":225,"date":226,"category":78,"readTime":131,"tags":227,"_excerpt":236,"_path":237},"starter-story-5-acquisition-cases","网站出海必看：Starter Story 上 5 个独立开发者获客案例，把第一批用户从哪来都告诉你了","2026-08-27",[228,229,230,231,232,233,234,106,235],"独立开发","网站出海","Starter Story","获客","Product Hunt","SEO","Build in Public","增长黑客","Starter Story 上 2933 个月入过万美金的小项目，连第一批用户从哪来都告诉你了。深度拆解 Papermark、AudioPen、Bank Statement Converter、ScreenshotOne、Chatbase 五个真实案例的获客路径。","\u002Fwriting\u002Fstarter-story-5-acquisition-cases",{"id":239,"title":240,"date":241,"category":78,"readTime":242,"tags":243,"_excerpt":253,"_path":254},"chinese-rest-shameness-burnout-recovery","中国人为什么不敢停下来：内卷时代的\"休息羞耻\"与 3 个破解方法","2026-08-25","11 分钟",[244,245,246,247,248,249,98,250,251,252],"内卷","休息羞耻","工作焦虑","牛马","停下来","自由职业","心理健康","自我成长","生活平衡","\"玩几天就心慌\"不是意志力问题，是长期被社会时钟驯化后的条件反射 中国式\"内卷\"的本质是横向比较陷阱：不是想赢，是怕输；不是想更富，是怕被落下 \"当牛马心里舒服\"是一种心理代偿机制：用忙碌掩盖存在焦虑，越忙越空虚 停下来\"感觉别人都跑掉了\"是社会比较 + 信息过载的双重错觉，真实世界没人那么关注你 ","\u002Fwriting\u002Fchinese-rest-shameness-burnout-recovery",{"id":256,"title":257,"date":258,"category":148,"readTime":58,"tags":259,"_excerpt":268,"_path":269},"top-10-free-platforms-indie-creators","独立开发者必收藏的 10 个免费平台：从代码托管到内容分发全覆盖","2026-08-13",[228,260,261,262,263,264,265,266,267,98],"免费工具","开源平台","创作者工具","效率工具","GitHub","Figma","F-Droid","Substack","GitHub 不只是代码托管，更是独立开发者的免费简历 + 团队协作 + CI\u002FCD 基础设施 Linux 让独立开发者彻底摆脱\"环境不一致\"的坑，是服务器、Web 项目、AI 训练的事实标准 Wikipedia + Internet Archive 是最被低估的\"研究前哨站\"，能解决 80% 的英","\u002Fwriting\u002Ftop-10-free-platforms-indie-creators",{"id":271,"title":272,"date":258,"category":273,"readTime":58,"tags":274,"_excerpt":285,"_path":286},"fde-quanshu-zongjie","FDE 前沿部署工程师从零入门指南 · 全书总结","技术教程",[275,276,277,278,279,280,281,282,283,284],"FDE","前沿部署工程师","Palantir","企业 AI","部署","范冰","AI 落地","OpenAI","Anthropic","Harvey","FDE · 全书总结 前沿部署工程师（FDE） 从零入门指南 范冰 著 · 基于公开仓库 14 个 Markdown 文件的完整梳理 原书框架参照《增长黑客》方法论体例 01 FDE 是什么？ 一句话定义： 前线部署工程师（Forward Deployed Engineer），是一个驻扎在客户现场、","\u002Fwriting\u002Ffde-quanshu-zongjie",{"id":288,"title":289,"date":290,"category":273,"readTime":114,"tags":291,"_excerpt":301,"_path":302},"90-day-organic-traffic-b2b-factory-seo","90 天靠自然流量做独立站：B2B 工厂 SEO 完整复盘（4 个致命问题 + 4 项整改 + 程序员视角深度补充）","2026-08-12",[292,293,294,83,295,296,297,298,299,300],"独立站","自然流量","B2B 工厂","外贸","SEO 优化","技术 SEO","外链建设","内容营销","谷歌排名","3 分钟摘要： 工厂独立站最常见的 4 个致命问题：关键词错位 \u002F 转化力为零 \u002F 技术 SEO 不到位 \u002F 外链权重为零 针对性 4 项整改：全站关键词重构 \u002F 全盘内容改写 \u002F 深度技术 SEO 修复 \u002F 高质量外链搭建 90 天执行时间表：第 1-30 天（技术修复 + 关键词重挖）\u002F 第 3","\u002Fwriting\u002F90-day-organic-traffic-b2b-factory-seo",{"id":304,"title":305,"date":306,"category":78,"readTime":307,"tags":308,"_excerpt":319,"_path":320},"ai-short-drama-industry-2026","AI 短剧 4 阶段生死局:3 个月一波,90% 承制公司要关,留下的只有 3 种人","2026-07-31","13 分钟",[309,310,311,312,313,314,315,316,317,318],"AI 短剧","短剧","创业复盘","行业分析","红果短剧","抖音短剧","内容创业","投流","出海","TikTok","3 分钟摘要: 4 阶段速览:解说漫剧(2024.6-9)→ 2D 黄金期(11-1 月)→ Seedance 仿真人(春节-4 月)→ 出海 TikTok(现在) 承制公司必死:长沙最大 200 人公司,一天入职 87 人,1 个月后关门,1 亿播放分账不到 10 万 闭门会真相:红果真人剧+AI","\u002Fwriting\u002Fai-short-drama-industry-2026",{"id":322,"title":323,"date":306,"category":78,"readTime":324,"tags":325,"_excerpt":335,"_path":336},"niche-product-overseas-thinking","国内做产品总想服务所有人,海外却专做 1% 小众市场,这是独立开发的真相","9 分钟",[228,326,327,328,329,330,331,332,333,334],"细分市场","小而美","海外产品","独立产品","niche","垂直产品","创业思维","产品哲学","Indiehacker","3 分钟摘要: 国内产品迷思:做一个工具,恨不得覆盖\"18-35 岁全人群\",功能堆到 50+,最后谁都不满意 海外独立开发者哲学:只服务一个明确小群体(Notion 用户\u002F播客主\u002FIndie Hacker),做深做透 1% 市场数学:全球 80 亿人 × 1% × 1% 转化 = 80 万付费用户","\u002Fwriting\u002Fniche-product-overseas-thinking",{"id":338,"title":339,"date":340,"category":148,"readTime":242,"tags":341,"_excerpt":352,"_path":353},"giffgaff-account-terminated-refund-guide","giffgaff 不到 1 月被封号？10 欧元余额退款攻略 + 英国保号卡使用避坑指南","2026-07-29",[342,343,344,345,346,347,348,349,350,351],"giffgaff","英国保号卡","海外手机号","余额退款","漫游政策","公平使用政策","eSIM","出国旅行","国际通信","账户管理","3 分钟摘要： giffgaff 封号邮件里写的 \"final position\" 指的是无法恢复号码和卡片使用权，不意味着可以扣押你的预付费余额 余额退款是常规操作——按 giffgaff 政策，账户终止时未消耗的预存资金应原路退回 提交 Ask an Agent 工单 申请退款，用对英文模板、态","\u002Fwriting\u002Fgiffgaff-account-terminated-refund-guide",{"id":355,"title":356,"date":340,"category":78,"readTime":307,"tags":357,"_excerpt":364,"_path":365},"smart-people-ultimate-arena-financial-markets","聪明人最后都会走向金融市场？10 年程序员的 5 点反驳 + 1 条血泪建议",[358,183,359,360,190,66,361,362,363,98],"金融市场","认知变现","独立思考","趋势跟踪","移动止损","心理博弈","3 分钟摘要： \"金融市场是世界上最公平的战场\"——部分对，但隐藏了 3 个不公平 \"认知变现速度最快\"——部分对，但 90% 的聪明人亏得比上班族还快 \"和全球最聪明的人博弈\"——部分对，但你以为的\"博弈\"是另一种\"被博弈\" \"最残酷的认知审判场\"——完全对，这是 5 点里最真实的一句 \"唯一能燃","\u002Fwriting\u002Fsmart-people-ultimate-arena-financial-markets",{"id":367,"title":368,"date":369,"category":78,"readTime":114,"tags":370,"_excerpt":379,"_path":380},"tiktok-shop-13-products-zero-orders","200 元 AI 跨境课复盘：13 个产品 0 订单，10 年程序员的跨境电商真实踩坑记录","2026-07-22",[83,371,372,373,98,374,375,376,377,378],"AI 跨境","TikTok 小店","避坑指南","副业变现","选品方法论","海外市场调研","供应链","真实复盘","3 分钟摘要： 课程里讲的\"4 大机会\"是真实的——AI 确实放大了小团队的跨境能力 但课程不会告诉你 90% 的卖家死在\"选品\"上——选错品 = 一切努力清零 13 个产品 0 订单的真实原因 = 我犯了跨境电商最经典的 3 个错：选品靠感觉、内容靠 AI 量产、流量靠自然等 跨境电商的隐藏成本是","\u002Fwriting\u002Ftiktok-shop-13-products-zero-orders",{"id":382,"title":383,"date":384,"category":78,"readTime":96,"tags":385,"_excerpt":393,"_path":394},"pieter-levels-one-person-saas","一人 + 一台电脑 + 500 万美金：从 Pieter Levels 看独立开发者的 6 环商业链路（实操玩法版）","2026-07-16",[386,98,387,388,389,390,391,392,329,374],"Pieter Levels","一人公司","海外商业","付费按钮","两周验证法","自动化系统","复购会员","3 分钟摘要： 一人公司不是\"小团队\"，是 \"单人 + 自动化系统\" 的商业形态——一个人 + 一台电脑 + 6 个产品环节 海外用户付费习惯跟国内完全不同：先看页面、再看价格、付款即交付，没有\"私聊逼单\"这一环 第一个核心方法 = \"先做付费按钮，不做大系统\"——24 小时内就能验证真假需求 第二","\u002Fwriting\u002Fpieter-levels-one-person-saas",{"id":396,"title":397,"date":384,"category":148,"readTime":398,"tags":399,"_excerpt":410,"_path":411},"workbuddy-110-office-prompts","WorkBuddy 不会用？110 条能直接干活的办公提示词库 + 5 段式黄金结构","22 分钟",[400,401,402,403,404,405,406,407,408,409],"WorkBuddy","提示词工程","AI 办公","智能办公","提示词库","工作流自动化","提示词模板","AI Agent","办公效率","萝卜哥","3 分钟摘要： 90% 的人用 WorkBuddy 失败的原因 = 只给\"愿望\"、不给\"任务\" 5 段式黄金结构 = 工作对象 + 可用材料 + 具体动作 + 交付物 + 检查规则 核心安全线 = 写入前先给预览（邮件、任务、自动化必须遵守） 11 类 110 条提示词完整覆盖：个人工作台 \u002F 会议","\u002Fwriting\u002Fworkbuddy-110-office-prompts",{"id":413,"title":414,"date":415,"category":273,"readTime":181,"tags":416,"_excerpt":424,"_path":425},"indie-dev-150-seo-strategies","独立开发者 150 个 SEO 策略速查手册：从 0 到 10 万流量的完整作战地图（关键词 \u002F 内容 \u002F 页面 \u002F 技术 \u002F 外链 \u002F AI \u002F 转化）","2026-07-15",[233,98,417,418,419,298,420,421,422,423],"关键词策略","内容策略","技术SEO","AI SEO","GEO","流量增长","转化优化","3 分钟摘要： SEO 7 大模块：关键词（找用户在哪）、内容（接住用户）、页面（让 Google 看得懂）、技术（让 Google 抓得到）、外链（让 Google 信得过）、AI SEO（让 ChatGPT \u002F Perplexity 引用你）、增长（把流量变收入） 关键词策略的核心 = 挖出 1","\u002Fwriting\u002Findie-dev-150-seo-strategies",{"id":427,"title":428,"date":415,"category":78,"readTime":242,"tags":429,"_excerpt":439,"_path":440},"zhongnian-beiye-bailand-fansi","失业 4 年、每天只想摆烂：一个 40 岁中年男人的复盘与自救",[430,431,432,433,434,435,436,437,204,438],"中年危机","摆烂","失业焦虑","副业","赚钱方法","底层逻辑","40岁","怀孕老婆","自我救赎","3 分钟摘要： 摆烂的本质是\"大脑拒绝再接收无效输入\"，不是意志力问题 失业 4 年 = 焦虑的真实来源不是\"没钱\"，是\"看不到确定的现金流\" 噪音型学习 = 看了 100 个博主的\"月入十万\"，一个底层闭环都没跑过 中年人不缺方法、缺打透一个方法的执行力 + 耐住 6-12 个月不冒头的耐心 摆烂","\u002Fwriting\u002Fzhongnian-beiye-bailand-fansi",{"id":442,"title":443,"date":444,"category":78,"readTime":242,"tags":445,"_excerpt":454,"_path":455},"chinese-seller-brand-mindset","中国独立站为什么做不出品牌:有网站不等于有品牌,从中美认知差到品牌资产构建","2026-07-05",[292,446,83,447,448,449,450,451,452,453],"品牌建设","商标注册","品牌资产","Shopify","中国卖家","DTC 品牌","流量套利","美国市场","3 分钟摘要: 中美品牌第一差:中国卖家从\"货\"出发(本月 ROI),美国卖家从\"资产\"出发(三年后品牌值多少钱) 中国独立站的本质是\"换了皮的批发摊位\":有网站,没有品牌;有产品,没有资产;有订单,没有复购理由 美国卖家把商标、域名、社媒账号、品牌名统一视为 品牌资产,在卖爆之前就把这些\"产权\"占","\u002Fwriting\u002Fchinese-seller-brand-mindset",{"id":457,"title":458,"date":444,"category":148,"readTime":459,"tags":460,"_excerpt":470,"_path":471},"google-indexing-api-fast-index","沙盒期 GitHub Pages 提速收录:用 Google Indexing API 24 小时强制收录新文章","10 分钟",[461,462,463,464,465,233,466,467,468,469],"Google Indexing API","GitHub Pages","沙盒期","强制收录","sitemap","Google Search Console","Service Account","googleapis","站长工具","3 分钟摘要: 沙盒期 = Google 对新域名\u002F低权重域名的\"观察期\",普通收录通道排队要 2-4 周 Indexing API 是 Google 官方给新闻站用的快速收录接口,任何类型站点都能用(Google 文档明确说明) 5 步走通:GCP 建项目 → 开 Indexing API → 建","\u002Fwriting\u002Fgoogle-indexing-api-fast-index",{"id":473,"title":474,"date":475,"category":78,"readTime":324,"tags":476,"_excerpt":486,"_path":487},"ai-music-creator-first-album","AI 让我成为音乐创作人：第一张专辑《未乱》与主打歌《鱼肚白》的诞生全流程","2026-06-18",[477,478,479,480,481,482,483,374,484,485],"AI 音乐","Suno","Udio","豆包","Gemini","音乐创作","独立创作","腾讯音乐","专辑发行","AI 把音乐创作的门槛从\"会乐器 + 懂乐理\"降到\"会写主题 + 会挑曲风\"，普通人也能成为音乐创作者 三步走完整路径：AI 写词 → AI 谱曲演唱 → 发行到平台 主流工具组合：豆包 \u002F Gemini（写词）+ Suno \u002F Udio \u002F 谱乐 AI（谱曲演唱） 主打歌《鱼肚白》从第一行歌词到腾","\u002Fwriting\u002Fai-music-creator-first-album",{"id":489,"title":490,"date":475,"category":78,"readTime":324,"tags":491,"_excerpt":498,"_path":499},"kalodata-market-research","如何用 Kalodata 做 TikTok 选品市场调研：10 分钟看懂一个赛道",[492,493,375,494,495,496,497,228,317,374],"Kalodata","TikTok 选品","市场调研","TikTok Shop","类目大盘","联盟达人","3 分钟摘要： 选品失败的 90% 原因不是产品不好，而是赛道没看清就开干 Kalodata 的「类目大盘」是最高效的市场调研入口，单页覆盖六个核心维度 优先选 增长中 + 盘子大 + 竞争分散 + 联盟达人驱动 + $10–30 主流价格带 + 新品占比高 的类目 价格带 $10–$30 是 Ti","\u002Fwriting\u002Fkalodata-market-research",{"id":501,"title":502,"date":475,"category":113,"readTime":324,"tags":503,"_excerpt":512,"_path":513},"kan-da-zuo-xiao-futures-trading","期货「看大做小」趋势交易法：从前辈点拨到实操悟道的完整路径（日线 + 30分钟 + RSI 临界点入场）",[183,504,505,173,506,507,508,509,510,511],"看大做小","多周期共振","日线","30分钟","5分钟","RSI指标","入场点","顺势交易","3 分钟摘要： 看大做小 = 大周期定方向 + 小周期找入场 + RSI 等临界点 周期组合按交易风格选：波段 = 日线 + 30分钟 \u002F 5分钟（本文重点） 大周期判方向三件套：均线排列、高低点结构、关键支撑阻力 小周期入场三件套：回调企稳、K 线反转形态、RSI 临界点 越是简单的事越难执行——","\u002Fwriting\u002Fkan-da-zuo-xiao-futures-trading",{"id":515,"title":516,"date":475,"category":113,"readTime":58,"tags":517,"_excerpt":525,"_path":526},"trading-for-a-living-book-summary","《以交易为生》核心思想精读：三重筛选 + 2% 风险 + 鳄鱼原则，三大支柱撑起一个交易者的底层操作系统",[518,519,520,521,188,522,184,361,523,524],"以交易为生","Alexander Elder","三重筛选","鳄鱼原则","交易心理","2% 风险","交易日志","交易是Mind（心理）+ Method（方法）+ Money（资金） 三位一体的职业，三者缺一不可 三重过滤筛选系统（Triple Screen） 是本书核心方法论：用周线定趋势 → 日线找回调 → 60 分钟找入场点 2% 风险原则：单笔交易最大亏损不超过账户总资金的 2% 6% 月度原则：单月累","\u002Fwriting\u002Ftrading-for-a-living-book-summary",{"id":528,"title":529,"date":530,"category":57,"readTime":459,"tags":531,"_excerpt":542,"_path":543},"cdn-anti-scan-vps-architecture","海外 VPS 的 CDN 加速与网站防探测架构（Cloudflare + nginx 反代 + WebSocket 后端完整方案）","2026-06-14",[532,533,534,535,536,537,538,539,540,541],"Cloudflare","nginx","反向代理","WebSocket","CDN 加速","网站防探测","VPS 安全","端口扫描","指纹识别","Origin 证书","3 分钟摘要： VPS 真实 IP 暴露后，会被扫描器 24\u002F7 探测，443 端口指纹泄露 用 Cloudflare CDN 隐藏真实 VPS IP（免费方案） 真实 WebSocket \u002F API 服务跑在 127.0.0.1 的非标准端口，永不对外暴露 nginx 终结 TLS + 转发 We","\u002Fwriting\u002Fcdn-anti-scan-vps-architecture",{"id":545,"title":546,"date":530,"category":148,"readTime":547,"tags":548,"_excerpt":554,"_path":555},"telegram-86-login-recovery","86 手机号无法登录 Telegram 终极解决方案：绕过付费验证码 + 旧设备验证找回账号","8 分钟",[549,550,551,552,553],"Telegram","86手机号","账号找回","二次验证","短信收费","3 分钟摘要： 86 号码 + 邮箱 + 二次验证密码 = 找回账号的三要素，缺一不可 用第三方客户端 Telega（绕过 Google Play 校验版本）登录，触发邮箱 + 2FA 通道 登录成功后再用官方 Telegram 登录、更新到最新版本 整个过程不需要原手机短信、不需要旧设备在线","\u002Fwriting\u002Ftelegram-86-login-recovery",{"id":557,"title":558,"date":559,"category":78,"readTime":547,"tags":560,"_excerpt":562,"_path":563},"indie-developer-journey","从零到一：我的独立开发之路","2026-05-15",[228,561,204],"创业","2023年初，我做出了一个重要决定：离开稳定的工作，成为一名独立开发者。这个决定并非一时冲动，而是经过深思熟虑的结果。","\u002Fwriting\u002Findie-developer-journey",{"id":565,"title":566,"date":567,"category":113,"readTime":568,"tags":569,"_excerpt":572,"_path":573},"futures-trading-seven-rules","期货交易的七条铁律：从亏损到稳定盈利的思考","2026-03-20","5 分钟",[183,113,570,217,361,571],"交易思维","心法","做期货这几年，踩过的坑、爆过的仓、熬过的夜，最终都沉淀成这七条心得。期货交易本质上不是预测行情，而是管理自己。以下每一条都是真金白银换来的，建议反复读、慢慢悟。","\u002Fwriting\u002Ffutures-trading-seven-rules",1789555364780]