如何在重新生成站点之前阻止GitHub页面“自动生成器”删除所有内容?

时间:2012-12-24 18:27:50

标签: github markdown documentation-generation github-pages

我创建了一个精彩的GitHub页面website for my little project,并在gh-pages分支中添加了一些其他页面。 我的问题是,每当我从'Settings => Automatic Page Generator'重新生成网站时,一切都被清理干净,我必须手动恢复文件。

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

如果自动生成器只是在不删除现有文件的情况下覆盖他的东西,情况会好得多。

4 个答案:

答案 0 :(得分:36)

  1. 结帐gh-pages分行。
  2. mkdir _layouts
  3. index.html移至_layouts
  4. 编辑_layouts/index.html{{content}}
  5. 替换内容部分的内部html
  6. 制作新文件index.md
  7. 将自动页面生成器的降价内容粘贴到index.md
  8. 将以下内容添加到index.md

    ---
    layout: index
    ---
    
  9. 创建_config.yml
  10. _config.yml中包含以下内容:

    markdown: kramdown
    kramdown:
       auto_ids: true
    

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

  11. 添加&提交更改,然后将分支推回到github。

  12. 现在,您只需从gh-branch in your github source browser编辑index.md即可自动使用jekyll进行更新,而不会弄乱您的gh-branch中的任何内容。

    您还可以使用占位符{{page.varname}}在布局中制作更多可修改的项目,然后将varname:your text添加到index.md的标题中。

答案 1 :(得分:2)

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

我注意到我的网站唯一更改的文件是index.html,生成的网站的其余部分是相同的。在index.html内部有一个<section>content</section>标记,其中包含从降价处生成的html。

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

我发现github提供了一个API到render a RAW markdown in raw mode到html 所以,最后一个难题是获得我的项目的README.md的永久链接,包含RAW内容;我偶然发现here

所以我写了这个simple bash script,单独重新生成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

查看实施细节here

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

相关问题