最安全的 hexo 多電腦同步部落格解決方案--非新建分支
本遷移解決方案博主親測有效,請放心遷移,遷移過程中如果還遇到什麼問題歡迎和我交流。
我們經常有這樣一個需求場景:需要在多臺電腦間完成 Hexo 部落格的撰寫和釋出,這就涉及到如何多臺電腦同步部落格的問題。
我最近也遇到了這個問題,網上看了很多方案。目前網上大部分 hexo 多電腦同步部落格方案都是新建一個開源分支去存放部落格原始檔,但是你會發現,這樣做的話很多第三外掛配置的appid、app_key等金鑰資訊也暴露在了公開的倉庫裡,存在一定的資料安全隱患。
那有沒有什麼辦法不暴露這些資訊呢?對了,用一個私有倉庫來存放部落格原始檔不就結了嘛。雖然 Github 的私有倉庫是收費的,但是我的部落格是同時部署在 Github 和 Coding 的,而 Coding 是可以新建私有倉庫的。Nice,完美解決。
當我準備寫遍部落格來分享(xuan yao)想到的這個解決方案時,最後還是榮幸的發現一遍文章已經分享了這個方案,只是在搜尋引擎中不太好搜出來。本著“不重複造輪子的原則”,筆者就不重寫了,而且他已經寫的很好了。但是有幾個問題需要特別注意一下:
-
該文中刪除主題的 .git 配置,如果你有多個主題資料夾的話,需要都刪除(如 NexT 主題)。然後刪除的命令那位筆者不小心寫錯了,應該是:
rm -rf ./themes/next/.git/
用這條命令來刪除你對應主題資料夾裡的.git 資料夾,注意 .git 是一個隱藏資料夾。
-
.gitignore
資料夾在 Hexo 的根目錄下可能已經存在了,可以開啟和該文中的忽略事項比對一下,如果一樣,接著git init
.gitignore
資料夾就新建一個新增相應忽略事項再git init
初始化。 -
這點需要特別注意,否則可能導致遷移失敗:
雖然我們第 1 步中刪除了主題的 .git 配置,第 2 步中Hexo專案根目錄的.gitignore
檔案也並沒有忽略掉theme
這個資料夾。但是!! NexT 主題的資料夾原來是用 git 來管理的,裡面還有一個.gitignore
檔案,把themes/next/source/lib
目錄下的很多檔案給忽略掉了。這就導致了你上傳到私有倉庫時,你以為你把
themes
檔案下的所有內容都上傳到倉庫了,但其實 “偷偷”的把themes/next/source/lib
hexo g
、hexo s
一預覽,你會奇怪的發現:所有的 FontAwesome 相關的圖示都不見了,其他的功能一切正常。正確的做法是:在新機器上把私有倉庫上的部落格原始檔 clone 下來後,因為還缺點原來的檔案,所以應該去原來機器上
themes/next/source/lib
目錄下,把整個 lib 目錄下的檔案全部複製貼上到新機器對應的themes/next/source/lib
目錄下,這樣就能正常生成站點檔案了。注意:同理,如果你的
themes
目錄下有多個主題配置檔案的話,可以檢視是否有.gitignore
檔案,用 git 上傳私有倉庫時是否也忽略了一些必要資源,如果有再新電腦上對應複製過來就 OK 了。關於這個問題的詳情,可以看這:https://github.com/theme-next/hexo-theme-next/issues/564#issuecomment-451385682
-
在新電腦上
npm install
下載 hexo 所需的環境的時候,要切到 hexo 的根目錄下,再執行npm install
。 -
當你在新電腦用
npm install
下載依賴的第三外掛時,由於 node 的版本、眾多第三方外掛、跨平臺等原因,可能有的外掛會存在相容性問題,導致下載不下來,筆者想遷移到 Mac 上就遇到相容性問題了,fsevent
外掛目前不支援 node v11+ 版本,而剛配置新電腦的 node 環境時,預設安裝的是最新版的 node,需要降低 node 的版本才能下載成功。至於如何降低 node 的版本,其實你不用刪除,有一個叫
nvm
(Node Version Manager)的工具,專門用來管理多個版本的 node 環境的,你可以下載多個版本的 node 存在你的機器中,用nvm
的命令列就可以實現不同版本 node 環境的隨意切換,非常方便。 -
好,當你在新的電腦上寫完部落格,本地預覽也沒問題,準備用 hexo d 部署到 Github 和 Coding 上前,別忘了把新電腦的 SSH 公鑰配置到 Github 和 Coding 上。
然後用 hexo d部署時,由於在新機器上,SSH 金鑰和之前的不一樣,第一次嘗試連線 Github 主機時會提示:
The authenticity of host 'github.com' can't be established.
Are you sure you want continue connecting?
輸入 yes 就好,同理 coding 倉庫也會提示,同樣輸入yes。至此,新電腦上寫完的部落格也成功同步更新到 Github 和 Coding 的倉庫上了。
更新完部落格後,記得 用 git push 將新電腦上改動的部落格原始檔也 push 到私有倉庫中,實現部落格原始檔的同步更新。
-
當你在另一臺電腦上準備開始寫部落格前,記得把遠端私有倉庫的最新部落格原始檔拉到本地,但記得不要用
git pull
的方式,用如下兩條命令:#將遠端 git 倉庫上最新的內容拉取到本地,將本地庫所關聯的遠端庫更新至最新
git fetch --all
#強制將本地庫的內容指向最新遠端倉庫的master分支
git reset --hard origin/master
最後附上該篇部落格的地址:
從此,你就可以在多臺電腦間愉快地同步更新部落格啦~
若到一臺新的電腦上,只要把部落格原始碼 clone 下來,配置好新機器的 node
、hexo
、git
環境,隨時可以發車~
也歡迎到我的獨立部落格上檢視更多的內容:最安全的 hexo 多電腦同步部落格解決方案–非新建分支