2013-07-24 14 views
11

我有一個基本的jekyll站點組成的頁面(不是職位),但是,因爲我想排序時,我列出他們的網頁,我不得不使用Jekyll-Sort插件(有點怪異的排序頁面沒有內置到jekyll)。如何將jekyll _site目錄推送到gh-pages分支,並將源代碼保留在master?

因爲我使用插件,所以我無法利用GitHub的自動jekylling。因此,我想將項目的源代碼推送到master分支,並將_site目錄分配到gh-pages分支。

我無法弄清楚如何做到這一點 - 我嘗試添加一個混帳回購協議的_site目錄內推,要gh-pages但我每次運行jekyll時它會清除整個目錄,我失去了.git文件夾。

有什麼建議嗎?或者一種本地排序的方式?

回答

1

我用shell腳本做了一段時間。

溶液1

創建排除所述_site /文件夾的.gitignore。然後讓你的shell腳本檢查你是否在master上,如果是的話,添加所有更改的文件並提交它們。然後將_site /文件夾移動到臨時文件夾。切換到gh-pages分支並複製臨時文件夾。全部添加並提交。推兩個主& gh-pages分支。

解決方案2. 將_site /文件夾的內容複製到另一個repo中,該repo是您正在使用的repo的確切克隆,但在gh-pages分支上檢出。然後簡單地從源頭回購和GH-頁面分支從另一個回購推主分支

+2

這兩個選項都覺得這麼黑客和不乾淨我甚至不會嘗試僱用他們。必須有更好的方式 – mizurnix

+0

我不確定過去幾年有多少頁面已經改變,但我無法想象它們讓你在github服務器上運行插件。這意味着您將需要同時推送源代碼和生成的頁面。不管你如何做到這一點,你都需要在兩個分支。嗯是的... – Polygnome

7

一個痛苦少的解決方案:

  1. Checkout的分支,在那裏你集結源位於(也許src,或master
  2. (可選:添加_site.gitconfig,所以它得到的忽略,如果尚未完成)
  3. 刪除_site目錄下的所有內容:

    $ rm -r _site/*

  4. 克隆你的回購的gh-pages支進_site目錄:

    $ git clone -b gh-pages `git config remote.origin.url` _site

最後的步驟:只要讓傑基爾構建,做承諾&推:

$ jekyll build

CD_site

$ cd _site

目標的所有文件提交:

$ git add -A

提交它們:

git commit -am 'Yeah. Built from subdir'

並將您的網站推送到GitHub頁面:

git push

相關問題