hexo是當前最火的靜態(tài)博客框架技俐,支持Markdown格式文章編輯并自動生成對應的靜態(tài)網(wǎng)頁,簡單高效令人愛不釋手褒脯。
使用hexo寫博客的流程通常是绎签,
- 通過
hexo new post_name
命令,會自動在source/_post
目錄下生成一個待寫的post_name.md
文件 - 編寫完該md文件后荔棉,用
hexo generate
編譯生成對應的HTML文件 - 發(fā)布之前闹炉,可以用
hexo s
本地預覽,然后通過hexo deploy
發(fā)布到遠程倉庫的master分支润樱,然后你的個人站點就能看到剛才新加的文章了
困擾
然而渣触,使用過hexo搭建個人博客的朋友們想必都會遇到博客源碼保存的問題。即遠程倉庫只會保存hexo發(fā)布后的靜態(tài)HTML文件壹若,你的博客md源文件嗅钻、主題配置等還在本地,一旦電腦磁盤壞了或者換了電腦店展,就無法在之前倉庫的基礎(chǔ)上繼續(xù)寫博客养篓。針對此問題,有不少博主會在github上單獨另起一個repository來專門保存博客源文件壁查,每次發(fā)布完新文章,需要手動地將source/post
下的md文件上傳到源文件對應的repository剔应,確實也能解決問題睡腿,但總歸是麻煩。后來偶然看到聰明的網(wǎng)友借助git分支來巧妙地實現(xiàn)用同一個倉庫保存靜態(tài)網(wǎng)頁和博客源碼峻贮,自己試了下確實很贊席怪,故總結(jié)之。
解決辦法
新建git分支
因Github Page要求使用master分支作為發(fā)布網(wǎng)站的源代碼纤控,我們只能用master分支來保存hexo生成的靜態(tài)網(wǎng)頁挂捻,對于博客源碼,可以新建一個source分支來存儲船万。在github上打開Pages對應的倉庫刻撒,也就是以"username.github.io"命名的倉庫,然后建立一個source分支耿导,如下圖:
因為我已經(jīng)創(chuàng)建過source分支声怔,故下方會顯示目前該倉庫上有master和source兩個分支。其中source分支顯示打鉤舱呻,表示當前倉庫的默認分支已經(jīng)是source而不是master了醋火,下面會講。
更改倉庫的默認分支
github上的倉庫初始都會有個master分支,也就是默認分支芥驳。對于一個倉庫project_name
柿冲,當我們通過git clone https://github.com/sherlockyb/project_name.git
下載代碼時,實際拉取的是默認分支master對應的代碼兆旬。而我們用hexo寫博客時假抄,通常是與md源文件打交道,對于deploy生成的master分支代碼并不需要我們關(guān)注爵憎,因此可將倉庫的默認分支改為保存源碼的source分支慨亲,這樣通過git clone
拉取的就是source分支代碼了。
在倉庫的主頁面宝鼓,通過Settings -> Branchs刑棵,可以看到Default branch的Tab,顯示的默認分支是master愚铡,可以勾選source蛉签,然后update即可將默認分支設(shè)置為source,如下圖:
將本地hexo目錄與遠程倉庫關(guān)聯(lián)
進入到本地hexo工程目錄沥寥,也就是我們通常執(zhí)行hexo new post
等命令的目錄碍舍,執(zhí)行如下操作:
git remote add origin https://github.com/sherlockyb/sherlockyb.github.io.git
推送博客源碼
將本地的md源文件、站點配置文件等推送到source分支邑雅。
因為我們只需要保留博客源碼片橡,其他無關(guān)的文件并不希望推送,需要確保配好了.gitignore
文件淮野,通常如下:
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
然后依次執(zhí)行如下命令:
git add .
git commit -m 'hexo source post'
git push origin source
刪除public等文件(可選)
因為source分支是從master分支新建的捧书,初始代碼實際就是master的拷貝,因而master中已有的public等deploy生成的文件也會一起帶過來骤星,這些都不算是博客源文件经瓷,如果你也覺著source分支還存著這些有些別扭,就可以先在本地把它刪掉洞难,然后執(zhí)行:
git add .
git commit -m 'DEL: public things which only for deploy'
git push origin source
執(zhí)行完之后舆吮,你的倉庫大概就是長這個樣子:
后續(xù)即便你再發(fā)布博客時,deploy生成public文件队贱,在提交博客源碼時色冀,也不會將其帶上去,因為有.gitignore
將其忽略了柱嫌。
新環(huán)境
假設(shè)我們換電腦了呐伞,要在新環(huán)境繼續(xù)在原有倉庫基礎(chǔ)上擼文章,此時通過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環(huán)境配置好后趟径,繼續(xù)像之前一樣
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
同步到原文