本文紀錄架設靜態網站時遇到的種種問題,分成github.io跟gh-pages兩大部份
使用github.io架設靜態網站
1.github.io專案
在github建立github new repository,命名必為 [github帳號名].github.io,比如xxxxx.github.io(本文皆用此例說明)
分歧點:自己的網頁與Github Pages site theme
2.1自己的網頁
若是已經有自己寫好的靜態網頁(含html、css、js等檔案),可直接按照git的流程將其上傳至步驟1專案的github,上傳成功後到 https://xxxxx.github.io/ 查看網站,一個靜態網頁就架好了!
2.2 Github Pages theme
xxxxx.github.io 專案頁面下選擇Setting -> Github Pages -> Choose a theme ->Jekyll theme (見圖1),選好後就能到 https://xxxxx.github.io/ 查看網站,網站也架好了!此時index.md內容可以自己改成履歷或其他~
參考資料1有手把手圖文教學
基本上兩個步驟就能架設好一個非常簡單的網站了~完成後回到 xxxxx.github.io頁面,右欄最下面會出現Environments-> github-pages (Active)
Github Pages site 的Theme可以隨便選嗎?
可以,主題隨便選都是 Jekyll theme,但注意會覆蓋整個Github Pages site,如下圖介紹
因此在Setting -> Github Pages -> Theme Chooser 會顯示出選擇的主題是Jekyll theme
因此在網頁中css顯現不出來只有文字和連結Orz…在chrome按F12使用開發者工具查看,出現滿滿的failed to load resource the server responded with a status of 404 () ……
解決辦法是在自己寫的html資料夾中建立一個.nojekyll的空文件(參考資料4),然後一起push到xxxxx.github.io
使用gh-pages分支功能架設靜態網站
1.github一般專案
在github建立new repository,當一般專案命名(例如projectA),git clone到本地端後放入html檔,進行git add –all、git commit -m”message”
2. gh-pages branch
建立 gh-pages branch,輸入以下指令
git checkout -b gh-pages # 建立gh-pages branch並切換過去
上面的單行指令相當於
git branch gh-pages # 建立gh-pages branch
git checkout gh-pages # 切換到gh-pages branch
接下來輸入以下指令
git push --set-upstream origin gh-pages
確認github上的projectA更新後,進入到https://xxxxx.github.io/projectA,這樣就透過gh-pages完成了一個與xxxxx.github.io專案分開的網站了~
這邊可以看參考資料2(簡單的gh-pages 使用流程)、參考資料3(詳細介紹gh-pages與實作)
–set-upstream 使用場景
projectA在建立時使用的通常是master branch,因此新建立的gh-pages branch 跟無法直接跟projectA產生對應關係,也就不能直接用git push推檔案上github,在git push後面才要加上–set-upstream 將gh-pages branch 註冊進 .git\config 設定檔,如此一來本次的變更會合併到gh-pages branch,推送到預設origin的github遠端資料庫。建立新分支時第一次推時使用–set-upstream 或 -u 就好,之後會跟原專案的master branch一樣可以使用git push。(參考資料5)
為何使用gh-pages?
xxxxx.github.io專案的index.html通常當主頁,但若日後放在其之下的網頁專案數量越來越多,會造成管理的麻煩,因此可利用gh-pages分支功能讓網頁專案能分開管理。
結語
github.io只能放靜態網頁,但拿來放履歷跟作品集綽綽有餘,Github本身又有強大的版控功能,果然是工程師的最佳夥伴~
參考資料
1.不用懂git也能用GitHub Pages架設靜態網站並綁定網域
4.Including node_modules And vendors Folders In Your GitHub Pages Site