hexo是當前最火的靜態博客框架,支持Markdown格式文章編輯並自動生成對應的靜態網頁,簡單高效使人愛不釋手。 使用hexo寫博客的流程一般是,html
hexo new post_name
命令,會自動在source/_post
目錄下生成一個待寫的post_name.md
文件hexo generate
編譯生成對應的HTML文件hexo s
本地預覽,而後經過hexo deploy
發佈到遠程倉庫的master分支,而後你的我的站點就能看到剛纔新加的文章了然而,使用過hexo搭建我的博客的朋友們想必都會遇到博客源碼保存的問題。即遠程倉庫只會保存hexo發佈後的靜態HTML文件,你的博客md源文件、主題配置等還在本地,一旦電腦磁盤壞了或者換了電腦,就沒法在以前倉庫的基礎上繼續寫博客。針對此問題,有很多博主會在github上單獨另起一個repository來專門保存博客源文件,每次發佈完新文章,須要手動地將source/post
下的md文件上傳到源文件對應的repository,確實也能解決問題,但總歸是麻煩。後來偶然看到聰明的網友藉助git分支來巧妙地實現用同一個倉庫保存靜態網頁和博客源碼,本身試了下確實很贊,故總結之。node
因Github Page要求使用master分支做爲發佈網站的源代碼,咱們只能用master分支來保存hexo生成的靜態網頁,對於博客源碼,能夠新建一個source分支來存儲。在github上打開Pages對應的倉庫,也就是以"username.github.io"命名的倉庫,而後創建一個source分支,以下圖:git
由於我已經建立過source分支,故下方會顯示目前該倉庫上有master和source兩個分支。其中source分支顯示打鉤,表示當前倉庫的默認分支已是source而不是master了,下面會講。github
github上的倉庫初始都會有個master分支,也就是默認分支。對於一個倉庫project_name
,當咱們經過git clone https://github.com/sherlockyb/project_name.git
下載代碼時,實際拉取的是默認分支master對應的代碼。而咱們用hexo寫博客時,一般是與md源文件打交道,對於deploy生成的master分支代碼並不須要咱們關注,所以可將倉庫的默認分支改成保存源碼的source分支,這樣經過git clone
拉取的就是source分支代碼了。shell
在倉庫的主頁面,經過Settings -> Branchs,能夠看到Default branch的Tab,顯示的默認分支是master,能夠勾選source,而後update便可將默認分支設置爲source,以下圖:npm
進入到本地hexo工程目錄,也就是咱們一般執行hexo new post
等命令的目錄,執行以下操做:json
git remote add origin https://github.com/sherlockyb/sherlockyb.github.io.git
將本地的md源文件、站點配置文件等推送到source分支。 由於咱們只須要保留博客源碼,其餘無關的文件並不但願推送,須要確保配好了.gitignore
文件,一般以下:hexo
.DS_Store Thumbs.db db.json *.log node_modules/ public/ .deploy*/
而後依次執行以下命令:框架
git add . git commit -m 'hexo source post' git push origin source
由於source分支是從master分支新建的,初始代碼實際就是master的拷貝,於是master中已有的public等deploy生成的文件也會一塊兒帶過來,這些都不算是博客源文件,若是你也覺着source分支還存着這些有些彆扭,就能夠先在本地把它刪掉,而後執行:post
git add . git commit -m 'DEL: public things which only for deploy' git push origin source
執行完以後,你的倉庫大概就是長這個樣子:
後續即使你再發布博客時,deploy生成public文件,在提交博客源碼時,也不會將其帶上去,由於有.gitignore
將其忽略了。
假設咱們換電腦了,要在新環境繼續在原有倉庫基礎上擼文章,此時經過git clone
將博客源碼拉到本地,而後安裝、初始化hexo就能搞定:
git clone https://github.com/sherlockyb/sherlockyb.github.io.git sherlockyb cd sherlockyb npm install hexo npm install hexo-deployer-git -save // hexo環境配置好後,繼續像以前同樣 hexo new post_name ...
確保hexo deploy
推送的是master分支,hexo目錄下的_config.yml文件一般會配置deploy推送的目標地址,這個通常在最初使用hexo時,就會配置爲master,不用改動:
# Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: type: git repo: https://github.com/sherlockyb/sherlockyb.github.io.git branch: master
同步更新到原文