2012-12-24 82 views
16

我創建了一個精彩的GitHub Pages website for my little project,並且我在gh-pages分支中添加了一些其他頁面。 我的問題是,每次我從'設置=>自動頁面生成器'重新生成網站,一切都被清理,我必須手動恢復文件。如何防止GitHub頁面「自動生成器」在重新生成站點之前刪除所有內容?

有沒有辦法預防或解決這個問題?

如果自動發生器只是在不刪除現有文件的情況下覆蓋他的東西,那將會好很多。

回答

36
  1. 結帳gh-pages分支。
  2. 的mkdir _layouts
  3. 移動index.html_layouts
  4. 編輯_layouts/index.html更換內容的內部HTML部分與{{content}}
  5. 作出新的文件index.md
  6. 自動頁面生成的粘貼降價含量爲index.md
  7. 將以下內容添加到index.md

    --- 
    layout: index 
    --- 
    
  8. 創建_config.yml
  9. 包括_config.yml如下:

    markdown: kramdown 
    kramdown: 
        auto_ids: true 
    

    這一步是爲了配合GitHub的降價語法

  10. 添加&提交更改,然後推分支回到github。

現在,你可以簡單地編輯從gh-branch in your github source browserindex.md,它將會更新jekyll自動和不亂用您的GH-分支東西。

您還可以使用佔位符{{page.varname}}在佈局中編輯更多項目,然後在您的index.md的標題中添加varname:your text

+3

正是我一直在尋找,謝謝!我不得不將'layout:index'更改爲'layout:index',以便讓它正常工作。否則,我會收到「deep_merge」錯誤。 – chris838

+2

爲什麼這不在github頁面教程!!!!謝謝。 – si28719e

+1

這應該是被接受的答案。 – Matthew

0

不,不可能。當您執行「生成」時,GitHub會擦除gh-pages存儲庫。你最好能做的就是你現在正在做的事情。另一個選擇可能不是使用GitHub頁面生成器來改變樣式,而是找到樣式的來源(它們可能位於GitHub某處),並通過提交更改(替換css文件和其他小的調整)手動更改它們。

2

那麼,經過一些嘗試後,我找到了解決方案。

我注意到,我的網站上唯一更改的文件是index.html,生成的網站的其餘部分是相同的。在index.html中,有一個<section>content</section>標籤,其中包含從降價產生的html。

所以我創建了兩個文件header.incfooter.inc,其中包含索引頁面的「靜態」部分。內容部分應該從README.md文件生成。

我發現有一個由github提供給render a RAW markdown in raw mode的API給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

我使用「Leap Day」佈局進行測試;但我認爲它也適用於其他人。

0

您可以configure Jekyll使用exclude選項跳過某些目錄。

(請注意,具有傑基爾一個keep_files選項 - 這是文件中destintation目錄)

相關問題