代码之家  ›  专栏  ›  技术社区  ›  Baleb

将忽略的dist文件夹部署到GitHub页面

  •  8
  • Baleb  · 技术社区  · 7 年前

    我已经为JavaScript库创建了Git repo。repo还包含一个使用捆绑库的演示网站,捆绑库是在 dist/ 文件夹我现在想将该网站部署到GitHub页面。

    然而,我有 dist公司/ “我的”中的文件夹 .gitignore 并希望它继续被忽视。

    是否有方法自动生成 gh-pages 分支,其中应包括 dist公司/ ,但请将其从 master 树枝

    4 回复  |  直到 7 年前
        1
  •  11
  •   Philippe    7 年前

    提交此脚本并在构建 dist :

    #!/bin/sh
    
    git commit -am "Save uncommited changes (WIP)"
    git branch --delete --force gh-pages
    git checkout --orphan gh-pages
    git add -f dist
    git commit -m "Rebuild GitHub pages"
    git filter-branch -f --prune-empty --subdirectory-filter dist && git push -f origin gh-pages && git checkout -
    

    我使用它;-)

        2
  •  1
  •   ErikMD    7 年前

    总结您的背景:

    • 您当前的分支是 master
    • 你有一个 dist/ 被忽略和未跟踪的文件夹
    • 它包含可以静态服务的网站源
    • 您想发布此 dist公司/ GitHub页面上的文件夹,使用 gh-pages 树枝

    实现这一点的最简单方法似乎是遵循本文中建议的工作流 gist 以及在 documentation of Yeoman .

    但请注意,这依赖于高级命令 git subtree 并要求 dist公司/ 未在上忽略和跟踪文件夹 主人

    然后,您可以按照文档中关于 configuration of GH Pages' publishing source .

    这是否解决了您的问题,还是您真的希望将这两个分支分开,而不是 dist/* 中的文件 主人 树枝

    在后一种情况下,问题更为复杂(因为工作树中存在未跟踪或忽略的文件,可能会阻碍流程…)但你可能想看看 this project ,这是 git subtree -基于解决方案,并且基于Bash脚本。

    (注意:我没有测试这个“git directory deploy”解决方案;它是在 gist 我上面提到过。)

        3
  •  1
  •   hlobit    3 年前

    幸亏 this blog post ,我终于找到了一个方便的方法 从另一个分支上的gitignored子文件夹伪造提交 . 我个人使用它在发布专用分支中发布构建的npm包。

    使用这样的解决方案非常灵活,可以保持历史记录(无需强制推送),但涉及更多git内部:

    #!/usr/bin/env bash
    
    # Environment
    BUILD_DIR="dist"
    RELEASE_BRANCH="gh-pages"
    VERSION="$(jq -r ".version" package.json)"
    
    # Script
    git fetch origin $RELEASE_BRANCH
    git add -f $BUILD_DIR
    tree=$(git write-tree --prefix=$BUILD_DIR)
    git reset -- $BUILD_DIR
    identifier=$(git describe --dirty --always)
    commit=$(git commit-tree -p refs/remotes/origin/$RELEASE_BRANCH -m "Deploy $identifier as v$VERSION" $tree)
    git update-ref refs/heads/$RELEASE_BRANCH $commit
    git tag -a "v$VERSION" -m "Release tag for $VERSION" $commit
    git push --follow-tags origin refs/heads/$RELEASE_BRANCH
    
        4
  •  0
  •   Baleb    6 年前

    或者,可以使用Travis CI或其他连续集成工具自动创建构建并将生成的文件部署到 gh-pages 分支机构: GitHub Pages Deployment