2011-09-26 46 views
4

我正在使用jekyll直接在Github的gh-pages分支上發佈靜態網站。我的問題是,我每次運行將jekyll生成爲gh頁面而不覆蓋_site中的.git

$ jekyll --no-auto /Users/khinester/Sites/tzm/ 

這將覆蓋.git目錄,我必須重新創建:

$ git init-db 
$ git add remote .. 
$ git add . 
$ git commit -a -m 'message' 
$ git branch gh-pages && git checkout gh-pages 
etc.. 
$ git push -f github gh-pages 

基本上我有一個包含生成所需的文件主分支博客和顯示實際博客的gh-pages分支。

並且還請注意,我必須強制推送。

這將是很好的也能夠版本控制更新!

我已閱讀https://github.com/mojombo/jekyll/wiki/Deployment但這似乎有更多的步驟,然後我現在做什麼。

有沒有更好的方法來做到這一點,或讓我錯過了一些東西。

+0

我得到了答案,http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.html – khinester

+4

如果是這樣的答案,繼續寫上去的一個總結吧,並張貼在一個鏈接下面的答案。然後接受它。這將確保其他人知道你明白了。 –

回答

9

gh-pages用於項目頁面,例如, user.github.io/pumpkin

master適用於用戶頁面,例如, user.github.io


我用a script用於發佈

# Push source branch 
git checkout source 
git add -A 
git commit 
git push origin source 

# Push master branch 
jekyll 
git checkout master 
git rm -qr . 
cp -r _site/. . 
rm -r _site 
git add -A 
git commit 
git push origin master 
0

我用史蒂芬竹篙劇本寫的這件開箱是項目頁面,而不是用戶的頁面。

#!/bin/bash 

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 
cd $DIR 

SELF=`basename $0` 
SOURCE_BRANCH="master" 
DEST_BRANCH="gh-pages" 
TMP_DIR="tmp" 

git checkout $SOURCE_BRANCH 
jekyll build -d $TMP_DIR 
git checkout $DEST_BRANCH 
# This will remove previous files, which we may not want (e.g. CNAME) 
# git rm -qr . 
cp -r $TMP_DIR/. . 
# Delete this script from the output 
rm ./$SELF 
rm -r $TMP_DIR 
git add -A 
git commit -m "Published updates" 
# May not want to push straight away 
# git push origin master 
git checkout $SOURCE_BRANCH 
1

Jekyll有一個名爲keep_files的配置數組。 Jekyll重建網站時,該陣列中的所有內容都將保留。

以下是它的添加位置:https://github.com/mojombo/jekyll/pull/630。搜索keep_files的問題將揭示更多的黑魔法。

.git和.svn文件默認添加到keep_files,所以這應該不再是問題了。

0

我使用以下shell腳本將一個Hakyll生成的站點 (目錄_site)提交到gh-pages分支。腳本:

  • 不需要您切換分支......只需從master或您所在的任何分支運行腳本。
  • 使用主存儲庫;不要緊,因爲...它不在那裏,因爲它不在那裏!
  • 如果什麼都沒有改變,什麼也不做!
  • 認識到新的,以前未跟蹤文件(即使有對現有文件沒有變化)
  • 添加一個新提交gh-pages分支,所以你並不需要強制推送。
  • 包括提交消息

代碼遵循的時間戳;在必要時更新路徑

export GIT_INDEX_FILE=$PWD/.git/index-deploy 
export GIT_WORK_TREE=$PWD/_site 
REF=refs/heads/gh-pages 
git read-tree "$REF" 
git add --all --intent-to-add 
git diff --quiet && exit 
git add --all 
TREE=$(git write-tree) 
COMMIT=$(git commit-tree "$TREE" -p "$REF" -m "snapshot $(date '+%y-%m-%d %H:%M')") 
git update-ref "$REF" "$COMMIT"