我在弄清楚如何最好地将缩小的构建部署到gh-pages时遇到了麻烦,但是却将开发构建保留在master中。
我有一个使用这种格式的存储库:
/build
/public
/stylesheets
a bunch of scss files
/javascript
a bunch of js files
index.html
gruntfile.js
在开发过程中,我的任务艰巨,可以监视所有内容并创建未压缩的内置文件。 开发期间的构建文件夹如下所示
/build
index.html
main.js
styles.css
然后,我要完成创建生产版本的艰巨任务,以最小化我的JavaScript和CSS,然后内联到我的index.html文件中。 给我一个simly的构建目录
/build
index.html
我需要能够在不破坏存储库历史记录的情况下,将生产的,最小化的build文件夹部署到gh-pages分支。 理想情况下,master分支根本不包含build文件夹。
我知道我可以使用git subtree push --prefix dist origin gh-pages
部署子git subtree push --prefix dist origin gh-pages
,问题是在正确的分支中拥有正确版本的build文件夹。
该URL上的帖子非常有用: https : //github.com/X1011/git-directory-deploy
重要的一点:由于我不想检入build文件夹,并且希望将其保留在.gitignore中,因此子树推送没有任何意义。 这个答案还使您有机会在推送主文件中从未见过的生产文件之前先构建它们。
假设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
重置回master
并进行其他部署
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