我无法弄清楚如何最好地将缩小的构建部署到gh-pages,但要保持开发版本的掌握。
我有一个这种格式的存储库:
/build
/public
/stylesheets
a bunch of scss files
/javascript
a bunch of js files
index.html
gruntfile.js
在开发过程中,我有一个笨拙的任务,它可以监视所有内容并创建未经识别的构建文件。我在dev期间的构建文件夹看起来像这样
/build
index.html
main.js
styles.css
然后我有一个艰巨的任务,用于创建一个生产版本,缩小我的javascript和css,然后内联到我的index.html文件中。给我一个simly的构建目录
/build
index.html
我需要能够将生产的minfied构建文件夹部署到gh-pages分支,而不会破坏repo的历史记录。理想情况下,主分支根本不包括构建文件夹。
我知道我可以使用git subtree push --prefix dist origin gh-pages
部署子树,问题是在正确的分支中拥有正确版本的build文件夹。
答案 0 :(得分:0)
此网址上的帖子非常有用:https://github.com/X1011/git-directory-deploy
重要的一点:由于我不希望签入构建文件夹,并且我想将它保留在.gitignore中,因此子树推送没有意义。这个答案还允许您有机会在推送之前构建生产文件,这些文件在master中从未见过。
假设您的dist
文件夹是生产文件所在的位置,以下是设置方法。
git --work-tree dist checkout --orphan gh-pages
首先创建一个没有历史记录且与其他分支(孤儿)分开的gh-pages分支
git --work-tree dist rm -r "*"
从分支中删除正常的源文件
git --work-tree dist add --all
仅添加dist
git --work-tree dist commit -m "initial publish"
git push origin gh-pages
git symbolic-ref HEAD refs/heads/master && git reset --mixed
重置回主人
以及其他部署
git checkout gh-pages
git --work-tree dist add --all
git --work-tree dist commit -m "Commit Message"
git push origin gh-pages
git symbolic-ref HEAD refs/heads/master && git reset --mixed