How do I prevent the GitHub Pages “Automatic Generator” to remove everything before regenerate the site?

后端 未结 4 1399
逝去的感伤
逝去的感伤 2021-01-31 20:34

I created a wonderful GitHub Pages website for my little project, and I added some other pages into the gh-pages branch. My problem is that, everytime I regenerate

相关标签:
4条回答
  • 2021-01-31 20:56

    You can configure Jekyll to skip certain directories with the exclude option.

    (Note that Jekyll has a keep_files option -- that is for the files in the destintation directory.)

    0 讨论(0)
  • 2021-01-31 21:04

    No, not possible. GitHub wipes the gh-pages repository when you do a "generate". Best you can do is what you are doing now. Another option might be not to use the GitHub page generator to change styles, but to find the source of the styles (they're probably on GitHub somewhere) and manually change them by committing changes (substitute the css files and other minor tweaks)

    0 讨论(0)
  • 2021-01-31 21:15

    Well, after some tries I found the solution.

    I noticed that the only file changed for my site was the index.html, the rest of the generated site was the same. Inside the index.html there was a <section>content</section> tag that was containing the html generated from the markdown.

    So I created two files header.inc and footer.inc, that contained the "static" part for the index page. The content part should have been generated from the README.md file.

    I found that there is an API provided by github to render a RAW markdown in raw mode to html.
    So, last piece of the puzzle was to obtain a permalink for the README.md of my project, with the RAW content; which I happened to find here.

    So I wrote this simple bash script that regenerates the index.html alone, without touching the rest of the site:

    #!/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
    

    Then I just launch the script as:

    $ 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
    

    See the implementation details here.

    I tested with the "Leap Day" layout; but I suppose it works also for the others.

    0 讨论(0)
  • 2021-01-31 21:16
    1. Checkout the gh-pages branch.
    2. mkdir _layouts
    3. move index.html to _layouts
    4. edit _layouts/index.html replace the the inner html of the contents section with {{content}}
    5. make new file index.md
    6. Paste markdown content of automatic page generator into index.md
    7. prepend the following to index.md

      ---
      layout: index
      ---
      
    8. create _config.yml
    9. include the following in _config.yml:

      markdown: kramdown
      kramdown:
         auto_ids: true
      

      this step is to match github's markdown syntax

    10. add & commit changes, and then push branch back to github.

    Now you can simply edit index.md from the gh-branch in your github source browser and it will update using jekyll automatically and not mess with anything in your gh-branch.

    You can also make more items editable in the layout using place holder {{page.varname}} and then adding varname:your text to the header of your index.md.

    0 讨论(0)
提交回复
热议问题