利用Git解決hexo博客多PC間同步問(wèn)題

場(chǎng)景

家里電腦和公司電腦,想要更新hexo blog.而hexo blog又沒(méi)有wordpress后臺(tái)可以寫文章,如在家里的電腦發(fā)表了A文章,第二天在公司電腦發(fā)表了B文章膏萧,查看hexo blog你會(huì)發(fā)現(xiàn)只有B文章而沒(méi)有A文章(因?yàn)楣倦娔X的hexo_file/source/_posts/沒(méi)有A文章.md文件),所以多個(gè)電腦想要寫文章蝌衔,需要解決hexo blog數(shù)據(jù)一致性榛泛。

數(shù)據(jù)同步方案

1.Dropbox等網(wǎng)盤同步
優(yōu)點(diǎn):免費(fèi) 操作簡(jiǎn)單
不足:在hexo generate 生成靜態(tài)文件會(huì)觸發(fā)自動(dòng)上傳。

2.Git版本庫(kù)同步
優(yōu)點(diǎn):更新方便
不足:部署過(guò)程相對(duì)比較麻煩噩斟,對(duì)新手不友好曹锨,需要使用git命令
國(guó)內(nèi)外知名的git服務(wù)提供商有:
github、bitbucket剃允、gitlab沛简、coding

由于hexo_blog配置文件涉及敏感的隱私數(shù)據(jù)(如api key),建議放私有倉(cāng)庫(kù)。
免費(fèi)的私有庫(kù)服務(wù)商有coding bitbucket.這里個(gè)人選擇coding

配置過(guò)程

Coding操作

1.注冊(cè)coding帳戶斥废,新建項(xiàng)目 選擇私有倉(cāng)庫(kù)椒楣。
2.coding 添加SSH公鑰操作
https://coding.net/help/doc/git/ssh-key.html#ssh-

上傳hexo blog到git版本庫(kù)

1.刪除文件夾內(nèi)原有的.git緩存文件夾并編輯.gitignore文件

  • 有些插件或者主題是git上下過(guò)來(lái)安裝的話,每個(gè)文件夾下都會(huì)有對(duì)應(yīng)的.git 文件夾牡肉,記得先刪掉捧灰,否則會(huì)和blog倉(cāng)庫(kù)沖突
  • .git默認(rèn)是隱藏文件夾,需要先開啟顯示隱藏文件夾统锤。##.git文件夾被刪除后整個(gè)文件對(duì)應(yīng)的git倉(cāng)庫(kù)狀態(tài)也會(huì)被清空##

  • .gitignore文件作用是聲明不被git記錄的文件凤壁,blog根目錄下的.gitignore是hexo初始化帶來(lái)的吩屹,可以先刪除或者直接編輯跪另,對(duì)hexo不會(huì)有影響拧抖。建議.gitignore內(nèi)添加以下內(nèi)容:
/.deploy_git
/public  
/_config.yml
  1. .deploy_git是hexo默認(rèn)的.git配置文件夾,不需要同步
  2. public內(nèi)文件是根據(jù)source文件夾內(nèi)容自動(dòng)生成免绿,不需要備份唧席,不然每次改動(dòng)內(nèi)容太多
  3. 即使是私有倉(cāng)庫(kù),除去在線服務(wù)商員工可以看到的風(fēng)險(xiǎn)外嘲驾,還有云服務(wù)商被攻擊造成泄漏等可能淌哟,所以不建議將配置文件傳上去

2.初始化倉(cāng)庫(kù)
hexo blog根目錄下執(zhí)行以下代碼:

git init
git remote add origin <server>

<server>是指在線倉(cāng)庫(kù)的地址。origin是本地分支,remote add操作會(huì)將本地倉(cāng)庫(kù)映射到云端

3.添加本地文件到倉(cāng)庫(kù)并同步到git上

git add .  #添加blog目錄下所有文件辽故,注意有個(gè)`.`(`.gitignore`聲明過(guò)的文件不包含在內(nèi))
git commit -m "first commit" #添加更新說(shuō)明
git push -u origin master #推送更新到云端服務(wù)器

在執(zhí)行這步之前一定要注意檢查下.gitignore文件的內(nèi)容徒仓,看看是否正確的把一些文件夾忽略掉了。如果加錯(cuò)了的話可以用

git rm -r --cached .

撤銷添加操作誊垢。

到這里的時(shí)候掉弛,云端同步已經(jīng)完成

將git的內(nèi)容同步到本地

假設(shè)之前將A電腦里的內(nèi)容備份到git了,現(xiàn)在B電腦準(zhǔn)備同步內(nèi)容喂走。

git init
git remote add origin <server> 
git fetch --all
git reset --hard origin/master

fetch是將云端所有內(nèi)容拉取下來(lái)殃饿。reset則是不做任何合并處理,強(qiáng)制將本地內(nèi)容指向剛剛同步下來(lái)的云端內(nèi)容(正常pull的話需要考慮不少?zèng)_突的問(wèn)題芋肠,比較麻煩乎芳。)

更新文章后的同步操作

假設(shè)在B電腦上寫完了文章,也hexo d -g
發(fā)布完了帖池,這時(shí)候需要將新文章的md文件更新上去奈惑。(其實(shí)就是提交更新給git,會(huì)的可以無(wú)視了)同一個(gè)bash界面下:

git add .

這時(shí)候可以用git status查看狀態(tài)睡汹,一般會(huì)顯示剛剛更改過(guò)的文件狀態(tài)肴甸。如:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   db.json
        new file:   source/_posts/test.md

上面的輸出狀態(tài)即說(shuō)明’db.json’文件做了更改,source/_posts目錄下新增了’test.md’文件帮孔。

然后對(duì)更改添加說(shuō)明并推送到遠(yuǎn)程倉(cāng)庫(kù).

git commit -m '更新信息'
git push

當(dāng)顯示類似如下提示的時(shí)候雷滋,即表示同步成功

To https://git.coding.net/sundayle/sundayle_hexo.git
 + 2c37f1e...4687bc6 master -> master (forced update)

再到A電腦上的時(shí)候,只需要

git pull

即可同步更新

git配置sock5代理

由于某些眾所周知的緣故文兢,所以github時(shí)不時(shí)的有時(shí)候速度會(huì)很慢晤斩,這種情況下本地代理就派上用場(chǎng)了。
這里以給git的SSH傳輸方式配置本地SS代理為例說(shuō)下配置過(guò)程:

1.打開~/.ssh/config文件姆坚。
2.在Host github *.github.com下添加以下字段:

Proxycommand ssh -S 127.0.0.1:1080 %h %p

3.測(cè)試連接
保存退出后重啟git bash澳泵。
輸入ssh -vT git@github.com,當(dāng)返回Hi username! You've successfully authenticated, but GitHub does not provide shell access.的時(shí)候即說(shuō)明配置成功
之后github的所有流量都會(huì)走本地的ss代理兼呵。

http://chitanda.me/2015/06/18/hexo-sync-in-multiple-pc/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兔辅,一起剝皮案震驚了整個(gè)濱河市腊敲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌维苔,老刑警劉巖碰辅,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異介时,居然都是意外死亡没宾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門沸柔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)循衰,“玉大人,你說(shuō)我怎么就攤上這事褐澎』岫郏” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵工三,是天一觀的道長(zhǎng)迁酸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)徒蟆,這世上最難降的妖魔是什么胁出? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮段审,結(jié)果婚禮上全蝶,老公的妹妹穿的比我還像新娘。我一直安慰自己寺枉,他們只是感情好抑淫,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姥闪,像睡著了一般始苇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筐喳,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天催式,我揣著相機(jī)與錄音,去河邊找鬼避归。 笑死荣月,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梳毙。 我是一名探鬼主播哺窄,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了萌业?” 一聲冷哼從身側(cè)響起坷襟,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎生年,沒(méi)想到半個(gè)月后婴程,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晶框,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年排抬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片授段。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖番甩,靈堂內(nèi)的尸體忽然破棺而出侵贵,到底是詐尸還是另有隱情,我是刑警寧澤缘薛,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布窍育,位于F島的核電站,受9級(jí)特大地震影響宴胧,放射性物質(zhì)發(fā)生泄漏漱抓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一恕齐、第九天 我趴在偏房一處隱蔽的房頂上張望乞娄。 院中可真熱鬧,春花似錦显歧、人聲如沸仪或。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)范删。三九已至,卻和暖如春拷肌,著一層夾襖步出監(jiān)牢的瞬間到旦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工巨缘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留添忘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓带猴,卻偏偏與公主長(zhǎng)得像昔汉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容