17

我为我的小项目创建了一个很棒的 GitHub Pages网站gh-pages,并在分支中添加了一些其他页面。我的问题是,每次我从“设置=>自动页面生成器”重新生成网站时,一切都被清理干净了,我必须手动恢复文件。

有没有办法预防或解决这个问题?

如果自动生成器只是覆盖他的东西而不删除现有文件,那就更好了。

4

4 回答 4

37
  1. 结帐gh-pages分支。
  2. mkdir_layouts
  3. 搬到index.html__layouts
  4. 编辑_layouts/index.html将内容部分的内部 html 替换为{{content}}
  5. 制作新文件index.md
  6. 将自动页面生成器的 markdown 内容粘贴到index.md
  7. 将以下内容添加到index.md

    ---
    layout: index
    ---
    
  8. 创造_config.yml
  9. 包括以下内容_config.yml

    markdown: kramdown
    kramdown:
       auto_ids: true
    

    这一步是为了匹配github的markdown语法

  10. 添加并提交更改,然后将分支推送回 github。

现在您可以在 github 源代码浏览器index.md中简单地从gh-branch 进行编辑,它会自动使用jekyll进行更新,而不会与 gh-branch 中的任何内容混淆。

您还可以使用占位符在布局中使更多项目可编辑,{{page.varname}}然后添加varname:your textindex.md.

于 2013-02-12T15:06:55.853 回答
2

好吧,经过一些尝试,我找到了解决方案。

我注意到为我的站点更改的唯一文件是 index.html,生成的站点的其余部分是相同的。在 index.html 中有一个<section>content</section>标签,其中包含从 markdown 生成的 html。

所以我创建了两个文件header.incfooter.inc其中包含索引页面的“静态”部分。内容部分应该是从README.md文件中生成的。

我发现github提供了一个API来以原始模式将RAW markdown渲染为html。
所以,最后一个难题是为我的项目的 README.md 获取一个永久链接,其中包含 RAW 内容;我碰巧在这里找到。

所以我编写了这个简单的 bash 脚本,它单独重新生成 index.html,而不涉及站点的其余部分:

#!/bin/sh
PG_DIR=$(dirname $0)
RAW_README_URL=https://raw.github.com/lviggiano/owner/master/README.md
GITHUB_API_URL=https://api.github.com/markdown/raw

cat $PG_DIR/header.inc
curl -s $RAW_README_URL | curl -s --data-binary @- -H 'Content-Type: text/plain' $GITHUB_API_URL 
cat $PG_DIR/footer.inc

然后我只是启动脚本:

$ cd myproject
$ git checkout gh-pages
$ git pull origin gh-pages:gh-pages
$ ./bin/autogen > index.html
$ git commit -m "updated index.html from latest README.md" index.html
$ git push origin gh-pages:gh-pages

请参阅此处的实施细节。

我用“闰日”布局进行了测试;但我想它也适用于其他人。

于 2012-12-27T23:49:59.920 回答
0

不,不可能。当您执行“生成”时,GitHub 会擦除 gh-pages 存储库。你能做的最好的就是你现在正在做的事情。另一种选择可能是不使用 GitHub 页面生成器来更改样式,而是找到样式的来源(它们可能在 GitHub 上的某个地方)并通过提交更改来手动更改它们(替换 css 文件和其他小调整)

于 2012-12-25T08:09:04.550 回答
0

您可以使用该选项配置Jekyll 以跳过某些目录。exclude

(请注意,Jekyll 有一个keep_files选项——用于目录中的文件destintation。)

于 2015-05-31T22:48:08.457 回答