首次部署 react 项目后将仓库设为公开,常让人担心:别人 fork 后运行 npm run deploy 是否会覆盖或劫持你的线上页面?答案是否定的——只要部署流程依赖你的个人凭证(如 github pages 的发布权限、ci/cd 私钥或自定义域名绑定),他人无法未经许可将代码部署到你的托管地址。
核心原理:部署 ≠ 推送代码,而是执行发布动作
将仓库设为 public 仅意味着他人可 只读访问 源码(clone/fork/view),但无法向你的 GitHub Pages 站点、Vercel 项目、Netlify 站点等目标环境写入内容。部署行为本质上是一次“发布操作”,需满足以下任一条件之一才能生效:
例如,若你的 package.js
on 中定义了:
"scripts": {
"deploy": "gh-pages -d build"
}该命令会尝试向当前仓库的 gh-pages 分支推送构建产物。但 Fork 出来的仓库是独立的(如 octocat/my-react-app → alice/my-react-app),gh-pages 命令默认只会推送到 alice/my-react-app 的 gh-pages 分支,生成的是 https://alice.github.io/my-react-app/ —— 完全独立于你的 https://yourname.github.io/my-react-app/。
⚠️ 注意事项:
✅ 总结:
公开仓库 = 开放协作起点,不是开放部署闸门。他人 Fork 后只能部署到他们自己的托管空间(新子域名、新项目 ID)。只要你未主动授权、未泄露部署密钥、未将 CI/CD 配置暴露给外部写入权限,你的线上页面始终安全可控。放心开源,专注迭代 ??