如何在GitHub Action中绕过.gitignore提交编译产物?
解决GitHub Pages部署时编译产物被.gitignore阻止的问题
你不需要把编译后的代码推送到main分支,源码和构建产物分离是更合理的做法。针对当前遇到的.gitignore限制js目录提交到gh-pages的问题,有两个实用的解决办法:
方法一:临时修改Action环境中的.gitignore
在Workflow的构建步骤前,临时移除.gitignore里的js/规则,这样编译后的产物就能被正常提交到gh-pages分支,而main分支的.gitignore不会受到任何影响。
修改后的Workflow配置如下:
on: push: workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout project uses: actions/checkout@v3 - name: 临时移除.gitignore中的js/规则 run: sed -i '/js\//d' .gitignore - name: Build and push uses: alexthemaster/action-build-typescript@master with: pushToBranch: true branch: "gh-pages" githubToken: ${{ secrets.GITHUB_TOKEN }}
方法二:自定义构建推送流程(更可控)
如果第三方Action的逻辑不够灵活,可以手动实现编译和推送步骤,直接指定要推送到gh-pages的文件,彻底绕开.gitignore的限制:
on: push: workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout project uses: actions/checkout@v3 with: fetch-depth: 0 # 拉取所有分支,确保能访问gh-pages - name: 安装TypeScript run: npm install -g typescript - name: 编译TypeScript代码 run: tsc - name: 准备gh-pages部署文件 run: | # 创建临时目录存放部署内容 mkdir -p deploy-files # 复制编译后的js目录和网站静态文件(根据你的实际文件调整) cp -r js/ index.html styles.css deploy-files/ - name: 推送到gh-pages分支 uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./deploy-files publish_branch: gh-pages
这个方法直接控制要推送的内容,不会受原仓库.gitignore的约束,适合需要更精细化控制部署内容的场景。
总结:坚持把编译产物放在gh-pages分支是正确的做法,不需要改动main分支的代码结构。
内容的提问来源于stack exchange,提问作者lanye74
相关产品推荐
相关产品推荐

