如何多端同步 Hexo 框架博客

多地同步的必要性

這個必要性其實不用多說,用着用着你就自己能體會到,比如頭天晚上在家裏發佈了一篇技術文章,第二天在公司 Coding 的過程中突然想到之前發的文某個地方有 Bug ,這時如果你的博客只搭在家裏那臺 PC 上的話就只能等到下班回家去改,或者在 Coding 時突然靈感迸發寫出了連自己都佩服的神碼想要急於分享出去時,就只能蛋疼的憋着回家寫了,嗯,這可能就是最需要多地同步的場景了。

使用 U 盤

使用 Git

嗯,這纔是正確的操作姿勢。 我的博客用的 Hexo 搭建的,所以接下來以此演示,其他使用 jekyll 或 wordpress 等框架搭建的博客同理可參考。

本地初始化一個 git 庫存放整個站點

比如我的 Blog 就放在D:\Pages\repos\Hexo-Blog庫下。

image.png

然後blog目錄就是整個站點的根目錄了,其實我們發佈出去的站點就是public/目錄而已,其它的東西都是用來生成這個目錄的必要文件。

image.png

處理多層 git 庫嵌套的問題

由於站點主題是從 github 直接 pull 下來的,所以blog/themes/your-theme/應該也是一個 git 庫,git 庫不支持多層嵌套,但好像有個子 git 庫的概念但是處理起來較麻煩,所以這裏我的解決方式很簡單粗暴 ———— 直接刪除blog/themes/your-theme/庫下的.git目錄讓它變成一個普通目錄,這樣就有一個不能直接同步更新主題的問題,但我感覺這並不是一個問題,因爲主題的更新週期很長,非重大 Bug 或功能一般不會更新,而且主題和文章並不強關聯,所以實在需要更新主題的新版本時可以先 pull 到別的目錄然後 copy 過來。

關聯到遠程倉庫

這裏可能有同學感到懵逼,因爲我在使用 Hexo & GitPage 搭建博客一文中爲 Hexo 安裝了 deploygit 插件用來部署文章,這個插件也是和 git 倉庫關聯的,這裏再次關聯一個遠程倉庫不就嵌套了嗎?當然不會,因爲這個插件是安裝在本地的,可以直接使用 npm 安裝,所以這個插件沒必要提交到 git 倉庫,因此默認生成的.gitignore文件就已經包含了.deploy*/以及其它一些可自動生成沒必要提交的目錄及文件。

blog/.gitignore file

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
CNAME

遠程倉庫下的文件

image.png

Ok,到這裏你可能已經明白了這個多地同步的思路:打比方說這個 Hexo 框架及 Node.js 環境是個印鈔機,部署時它所生成的public/站點目錄就是鈔票,那麼我們同時想在家裏和公司印鈔怎麼解決?印鈔機兩邊都一樣,那就是把印鈔的模板 fork 兩份出來,只需保證兩套模板的同步就能確保兩邊印出來的鈔票都是真的了。所以上面的遠程倉庫就相當於包含了整個印鈔模板,整體思路就是這麼簡單。

關鍵部分的操作

同步了兩邊的環境都一致並且都可以使用 hexo clean && hexo d 部署文章後,還需注意的就是每次文章發佈完成後執行如下命令:

$ cd repos/Hexo-Blog/
$ git add .
$ git commit -m "commit msg."
$ git push origin master

每次開始寫文章之前執行如下命令:

$ cd repos/Hexo-Blog/
$ git pull origin master

每天結束工作時都 commit 一下是個優秀的習慣。

“偷懶是人類進步的原動力”

每次動一行代碼都要敲一堆命令來發布和同步?能不能一鍵搞定這些操作呢?當然可以,不要忘了 Windows 批處理,我們在 repos/Hexo-Blog/ 下創建三個 bat 腳本

blog-pub

cd /d D:/Pages/repos/Hexo-Blog/blog

hexo clean&&hexo d

pause

blog-pull

cd /d d:/Pages/repos/Hexo-Blog

git pull origin master

pause

blog-push

cd /d D:/Pages/repos/Hexo-blog

git add .
git commit -m "add post"
git push --all

pause

然後這些操作只需雙擊就能搞定了

既然做到這一步了,那麼就能更進一步,我們可以給 Windows 設置一個定時任務,讓它開機拉代碼,下班前 push 代碼,以防忘記

1、打開任務計劃程序(taskschd.msc)

2、Alt+A+B 創建基本任務

setup1

setup2

setup3

setup4

setup5

setup6

經過如上設置,在每天的 17:25 Win任務計劃程序就會自動執行提交代碼的腳本了。

文中沒具體提到怎麼創建倉庫,怎麼關聯倉庫等等,這些都是 git 基礎知識,需要的同學可以參考 Git 常用命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章