【问题标题】:How do I push jekyll _site directory to gh-pages branch, and leave the source in master?如何将 jekyll _site 目录推送到 gh-pages 分支,并将源代码保留在 master 中?
【发布时间】:2013-07-24 01:01:27
【问题描述】:

我有一个由页面(不是帖子)组成的基本 jekyll 站点,但是因为我想在列出页面时对其进行排序,所以我不得不使用 Jekyll-Sort 插件(有点奇怪的排序页面没有内置到 jekyll )。

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

我不知道该怎么做 - 我尝试在 _site 目录中添加一个 git repo 以将其推送到 gh-pages 但每次我运行 jekyll 它都会删除整个目录并且我丢失了.git 文件夹。

有什么建议吗?还是一种原生排序方式?

【问题讨论】:

    标签: git github jekyll github-pages


    【解决方案1】:

    一个不那么痛苦的解决方案:

    1. 检查您的分支,您的构建源所在的位置(可能是srcmaster
    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.

    【讨论】:

      【解决方案2】:

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

      解决方案 1。

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

      解决方案 2。 将 _site/ 文件夹的内容复制到另一个 repo,它是您正在使用的 repo 的精确克隆,但在 gh-pages 分支上签出。然后只需从源仓库推送主分支,从另一个仓库推送 gh-pages 分支

      【讨论】:

      • 这两个选项都让人觉得很老套和不干净,我什至不会尝试使用它们。一定有更好的办法
      • 我不确定过去几年 gh-pages 发生了多少变化,但我无法想象它们会让你在 github 服务器上运行插件。这意味着您将需要同时推送源和生成的页面。无论你如何做到这一点,你都希望在两个分支中做到这一点。所以是的......
      猜你喜欢
      • 2018-02-02
      • 2014-06-05
      • 2013-12-23
      • 1970-01-01
      • 2015-06-27
      • 2021-08-01
      • 2016-10-07
      • 1970-01-01
      • 2011-08-14
      相关资源
      最近更新 更多