将提交的文件拆分并推送到两个不同的分支

时间:2019-05-11 16:20:48

标签: bash git sh github-pages vuepress

我想用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

2 个答案:

答案 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的弱点,该弱点在对他的答案的评论中提到:masterdev分支没有共同之处,甚至没有最初的提交。因此,这可能并不比拥有两个存储库更好,但是它确实可以将所有内容存储在一起,我认为这很方便。

注意:即使只有一个远程仓库,也需要两个单独的沙箱,因为否则,不可能在同一沙箱中同时具有不同分支的最新视图。