我为我的小项目创建了一个很棒的 GitHub Pages网站gh-pages
,并在分支中添加了一些其他页面。我的问题是,每次我从“设置=>自动页面生成器”重新生成网站时,一切都被清理干净了,我必须手动恢复文件。
有没有办法预防或解决这个问题?
如果自动生成器只是覆盖他的东西而不删除现有文件,那就更好了。
我为我的小项目创建了一个很棒的 GitHub Pages网站gh-pages
,并在分支中添加了一些其他页面。我的问题是,每次我从“设置=>自动页面生成器”重新生成网站时,一切都被清理干净了,我必须手动恢复文件。
有没有办法预防或解决这个问题?
如果自动生成器只是覆盖他的东西而不删除现有文件,那就更好了。
gh-pages
分支。_layouts
index.html
__layouts
_layouts/index.html
将内容部分的内部 html 替换为{{content}}
index.md
index.md
将以下内容添加到index.md
---
layout: index
---
_config.yml
包括以下内容_config.yml
:
markdown: kramdown
kramdown:
auto_ids: true
这一步是为了匹配github的markdown语法
添加并提交更改,然后将分支推送回 github。
现在您可以在 github 源代码浏览器index.md
中简单地从gh-branch 进行编辑,它会自动使用jekyll进行更新,而不会与 gh-branch 中的任何内容混淆。
您还可以使用占位符在布局中使更多项目可编辑,{{page.varname}}
然后添加varname:your text
到index.md
.
好吧,经过一些尝试,我找到了解决方案。
我注意到为我的站点更改的唯一文件是 index.html,生成的站点的其余部分是相同的。在 index.html 中有一个<section>content</section>
标签,其中包含从 markdown 生成的 html。
所以我创建了两个文件header.inc
,footer.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
请参阅此处的实施细节。
我用“闰日”布局进行了测试;但我想它也适用于其他人。
不,不可能。当您执行“生成”时,GitHub 会擦除 gh-pages 存储库。你能做的最好的就是你现在正在做的事情。另一种选择可能是不使用 GitHub 页面生成器来更改样式,而是找到样式的来源(它们可能在 GitHub 上的某个地方)并通过提交更改来手动更改它们(替换 css 文件和其他小调整)
您可以使用该选项配置Jekyll 以跳过某些目录。exclude
(请注意,Jekyll 有一个keep_files
选项——用于目录中的文件destintation
。)