如何将jekyll _site目录推送到gh-pages分支,并将源保留在master中?

Tob*_*nke 12 git github jekyll github-pages

我有一个基本的jekyll网站,包括页面(而不是帖子)但是,因为我想在列出它们时对页面进行排序,我不得不使用Jekyll-Sort插件(有点奇怪的排序页面不是内置于jekyll).

因为我正在使用插件,所以我无法利用GitHub的自动jekylling.所以我想将项目的源代码推送到master分支,只将_site目录推送到gh-pages分支.

我无法弄清楚如何做到这一点 - 我尝试在_site目录中添加一个git repo 来推送它,gh-pages但每次我运行jekyll它都会删除整个目录而我丢失了.git文件夹.

有什么建议?还是一种本地排序方式?

小智 9

一个不太痛苦的解决方案:

  1. 检查您的分支,您的构建源所在的位置(可能src,或master)
  2. (可选:添加_site到您的.gitconfig,所以它被忽略,如果尚未完成)
  3. 删除_site目录的所有内容:

    $ rm -r _site/*

  4. 将您的repo的gh-pages分支克隆到_site目录中:

    $ git clone -b gh-pages `git config remote.origin.url` _site

最后的步骤:让jekyll构建,执行提交和推送:

$ jekyll build,

CD到_site:

$ cd _site,

定位所有提交文件:

$ git add -A,

提交他们:

git commit -am 'Yeah. Built from subdir'

并将您的网站推送到GitHub-Pages:

git push.


Pol*_*ome 1

我自己用 shell 脚本做了一段时间。

解决方案1。

创建一个排除 _site/ 文件夹的 .gitignore。然后让你的 shell 脚本检查你是否在 master 上,如果是,添加所有更改的文件并提交它们。然后将 _site/ 文件夹移动到临时文件夹。切换到 gh-pages 分支并将临时文件夹复制过来。全部添加并提交。推送 master 和 gh-page 分支。

解决方案 2. 将 _site/ 文件夹的内容复制到另一个存储库,该存储库是您正在使用的存储库的精确克隆,但已在 gh-pages 分支上签出。然后只需从源存储库推送 master 分支并从其他存储库推送 gh-pages 分支

  • 这两种选择都感觉很老套和不干净,我什至不会尝试使用它们。一定会有更好的办法 (2认同)