場景
家里電腦和公司電腦,想要更新hexo blog.而hexo blog又沒有wordpress后臺可以寫文章,如在家里的電腦發表了A文章,第二天在公司電腦發表了B文章,查看hexo blog你會發現只有B文章而沒有A文章(因為公司電腦的hexo_file/source/_posts/沒有A文章.md文件),所以多個電腦想要寫文章,需要解決hexo blog數據一致性。
數據同步方案
1.Dropbox等網盤同步
優點:免費 操作簡單
不足:在hexo generate 生成靜態文件會觸發自動上傳。
2.Git版本庫同步
優點:更新方便
不足:部署過程相對比較麻煩,對新手不友好,需要使用git命令
國內外知名的git服務提供商有:
github、bitbucket、gitlab、coding
由于hexo_blog配置文件涉及敏感的隱私數據(如api key),建議放私有倉庫。
免費的私有庫服務商有coding bitbucket.這里個人選擇coding
配置過程
Coding操作
1.注冊coding帳戶,新建項目 選擇私有倉庫。
2.coding 添加SSH公鑰操作
https://coding.net/help/doc/git/ssh-key.html#ssh-
上傳hexo blog到git版本庫
1.刪除文件夾內原有的.git緩存文件夾并編輯.gitignore文件
- 有些插件或者主題是git上下過來安裝的話,每個文件夾下都會有對應的.git 文件夾,記得先刪掉,否則會和blog倉庫沖突
- .git默認是隱藏文件夾,需要先開啟顯示隱藏文件夾。##.git文件夾被刪除后整個文件對應的git倉庫狀態也會被清空##
.gitignore
文件作用是聲明不被git記錄的文件,blog根目錄下的.gitignore是hexo初始化帶來的,可以先刪除或者直接編輯,對hexo不會有影響。建議.gitignore內添加以下內容:
/.deploy_git
/public
/_config.yml
.deploy_git
是hexo默認的.git配置文件夾,不需要同步- public內文件是根據source文件夾內容自動生成,不需要備份,不然每次改動內容太多
- 即使是私有倉庫,除去在線服務商員工可以看到的風險外,還有云服務商被攻擊造成泄漏等可能,所以不建議將配置文件傳上去
2.初始化倉庫
hexo blog根目錄下執行以下代碼:
git init
git remote add origin <server>
<server>是指在線倉庫的地址。origin是本地分支,remote add操作會將本地倉庫映射到云端
3.添加本地文件到倉庫并同步到git上
git add . #添加blog目錄下所有文件,注意有個`.`(`.gitignore`聲明過的文件不包含在內)
git commit -m "first commit" #添加更新說明
git push -u origin master #推送更新到云端服務器
在執行這步之前一定要注意檢查下.gitignore文件的內容,看看是否正確的把一些文件夾忽略掉了。如果加錯了的話可以用
git rm -r --cached .
撤銷添加操作。
到這里的時候,云端同步已經完成
將git的內容同步到本地
假設之前將A電腦里的內容備份到git了,現在B電腦準備同步內容。
git init
git remote add origin <server>
git fetch --all
git reset --hard origin/master
fetch是將云端所有內容拉取下來。reset則是不做任何合并處理,強制將本地內容指向剛剛同步下來的云端內容(正常pull的話需要考慮不少沖突的問題,比較麻煩。)
更新文章后的同步操作
假設在B電腦上寫完了文章,也hexo d -g
發布完了,這時候需要將新文章的md文件更新上去。(其實就是提交更新給git,會的可以無視了)同一個bash界面下:
git add .
這時候可以用git status查看狀態,一般會顯示剛剛更改過的文件狀態。如:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: db.json
new file: source/_posts/test.md
上面的輸出狀態即說明’db.json’文件做了更改,source/_posts目錄下新增了’test.md’文件。
然后對更改添加說明并推送到遠程倉庫.
git commit -m '更新信息'
git push
當顯示類似如下提示的時候,即表示同步成功
To https://git.coding.net/sundayle/sundayle_hexo.git
+ 2c37f1e...4687bc6 master -> master (forced update)
再到A電腦上的時候,只需要
git pull
即可同步更新
git配置sock5代理
由于某些眾所周知的緣故,所以github時不時的有時候速度會很慢,這種情況下本地代理就派上用場了。
這里以給git的SSH傳輸方式配置本地SS代理為例說下配置過程:
1.打開~/.ssh/config文件。
2.在Host github *.github.com下添加以下字段:
Proxycommand ssh -S 127.0.0.1:1080 %h %p
3.測試連接
保存退出后重啟git bash。
輸入ssh -vT git@github.com,當返回Hi username! You've successfully authenticated, but GitHub does not provide shell access.的時候即說明配置成功
之后github的所有流量都會走本地的ss代理。