You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将dev分支指定文件夹复制到deploy分支,实现GitHub Pages自动化部署?

GitHub Pages 自动化部署方案(从dev分支dist同步到deploy分支根目录)

核心思路

创建无历史记录的干净deploy分支,将dev分支下packages/client/dist/的内容直接复制到该分支根目录,推送前彻底清空分支旧内容,确保deploy分支仅包含最新构建产物。

具体命令步骤(可封装为yarn脚本)

1. 前置准备(确保在dev分支且已完成构建)

git checkout dev
yarn build # 生成packages/client/dist/下的构建产物

2. 重置deploy分支(清空所有旧内容)

# 创建无父提交的空分支(若deploy已存在,会强制覆盖原有内容)
git checkout --orphan deploy
# 删除分支下所有文件及目录,保证工作区完全干净
git rm -rf .

3. 复制dist内容到当前分支根目录

# 复制dist下的所有可见文件到工作区根目录
cp -r packages/client/dist/* .
# 复制dist下的隐藏文件(如.gitignore、CNAME等,忽略不存在的报错)
cp -r packages/client/dist/.* . 2>/dev/null || true

4. 提交并推送deploy分支

git add .
# 带时间戳的提交信息,方便追溯部署版本
git commit -m "chore: deploy to GitHub Pages [$(date +'%Y-%m-%d %H:%M:%S')]"
# 强制推送覆盖远程分支(因无历史记录,必须用-f)
git push -f origin deploy

5. 切回dev分支继续开发

git checkout dev

封装为yarn命令

在项目根目录的package.json中添加如下脚本,之后只需执行yarn deploy:ghp即可一键完成部署:

{
  "scripts": {
    "deploy:ghp": "git checkout dev && yarn build && git checkout --orphan deploy && git rm -rf . && cp -r packages/client/dist/* . && cp -r packages/client/dist/.* . 2>/dev/null || true && git add . && git commit -m \"chore: deploy to GitHub Pages [$(date +'%Y-%m-%d %H:%M:%S')]\" && git push -f origin deploy && git checkout dev"
  }
}

关键问题说明

  • .gitignore干扰解决:直接复制dist文件到空分支,而非从dev分支缓存读取,dev分支的.gitignore不会影响deploy分支的文件提交。
  • 旧产物清理:git checkout --orphan+git rm -rf .确保每次部署都是全新环境,彻底避免旧文件残留。
  • 强制推送合理性:deploy分支仅用于存放构建产物,无开发历史,强制推送不会丢失有效内容。

内容的提问来源于stack exchange,提问作者optimizitor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:52:44