我想用VuePress创建一个网站并用Github Pages进行部署。幸运的是,VuePress能够生成包含所有必需的.html文件的 dist 文件夹。该文件夹位于(从根目录) ./ docs / .vuepress / dist ,因此我可以从该文件夹中提取所有文件并进行部署。
不幸的是,Github Pages只能从master分支部署文件
https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages
,并且无法为构建文件配置特定的文件夹。我考虑了以下解决方案:
在master分支旁边创建一个“ dev”分支,并将dist文件夹中的文件保留在master分支中,并将项目放在dev分支中。
我开始在终端上使用Git进行学习,并创建了一个 publish.sh 文件来提交并将项目推送到Github存储库。
git add *
git commit -m "."
git push origin master
如何增强我的Shell脚本以执行以下操作(如果可能)
git add *
git commit -m "."
git push -- all files -- origin dev
git push -- all files of the dist folder -- origin master
答案 0 :(得分:2)
也许可以在dist
文件夹中添加一个附加存储库,该存储库将同步到Github Pages存储库,仅包含相关文件。
可以做到:
$ cd dist
$ git init
$ git remote add origin <github-pages-repo>
$ git add .
$ git commit -m 'initial commit'
$ git push origin master
答案 1 :(得分:1)
您可以通过以下操作来实现此目的:让两个沙箱指向同一个GitHub存储库,其中一个沙盒已签出dev
分支,您可以在其中修改文件,而另一个沙盒可以签出master
分支。更新dist文件。
这里我假设<repo>
已经存在于GitHub上,但它可能有也可能没有分支。
设置您的dev
分支,以在其中编辑代码:
git clone <repo> repo.dev
cd repo.dev
git checkout -b dev # remove -b if origin/dev exists
# edit, commit, edit, commit, edit, commit
git push --set-upstream origin dev # remove --set-upstream if you removed -b above
设置您的master
分支,以在其中发布代码:
cd ..
git clone <repo> repo.dist
cd repo.dist
git checkout -b master # remove -b if origin/master exists
# copy the .vuepress/dist directory into this sandbox as required for deployment
git add .
git commit -m 'initial dist'
git push --set-upstream origin master # remove --set-upstream if you removed -b above
现在,下次您要进行更改:
cd ../repo.dev
# edit, commit, edit, commit, edit, commit
# make vuepress update repo.dist/.vuepress/dist,
# possibly by symlinking it from your repo.dev sandbox.
cd ../repo.dist
git commit -a -m'updated dist'
git push
现在,此解决方案确实具有@NitsanAvni的弱点,该弱点在对他的答案的评论中提到:master
和dev
分支没有共同之处,甚至没有最初的提交。因此,这可能并不比拥有两个存储库更好,但是它确实可以将所有内容存储在一起,我认为这很方便。
注意:即使只有一个远程仓库,也需要两个单独的沙箱,因为否则,不可能在同一沙箱中同时具有不同分支的最新视图。