解决hexo多台电脑之间同步访问和百度无法索引hexo博客的问题

声明

本文重点讲解如何进行hexo多台电脑之间同步访问问题;带过一下利用coding.net网站进行百度SEO优化问题;其他一些操作错误的小细节请自行百度或者与我联系。感恩。

场景

进入研究生生活之后,需要在A实验室(或者工作单位)之中进行博客的日常码字和管理;然而有时候回到B宿舍(或者家里)之后又想更新blog。然而囿于hexo静态博客,无法像wp那样进行后台的管理和编写,只能在本地进行同步和上传,无奈想起使用协同代码管理服务————git.

选择

前一阵和小伙伴们做比赛的时候,由于暂时需要进行代码的保密工作,所以选择了码云进行代码托管和协同工作。github被微软收购之后,在今年1月份突然宣布了要将私有代码托管服务转变为免费的项目!(本来在收购之前 博主还特意备份了一下github的代码…… :)于是乎今天使用github来进行hexo原始文件的同步处理操作。

关于百度无法索引hexo博客

需要ssh连接coding网站,并且在 hexo_config.xml当中的 deploy一项中添加相关hexo d之后的代码。因为coding也是支持进行hexo静态博客的建立的,同样和github一样,只能建立一个相关的博客。(不愿意用码云 也是考虑到,这样一下子就要运用到 三个 代码托管平台啦!)

上传blog到git

这个操作建议在blog进度最新的PC上进行的,否则后面解决冲突会比较麻烦
在github上添加公钥,repository建立新等过程略过不讲。

  1. 删除文件夹内原有的.git缓存文件夹并编辑.gitignore文件

    • 有些插件或者主题是git上下过来安装的话,每个文件夹下都会有对应的.git 文件夹,记得先删掉,否则会和blog仓库冲突
      (.git默认是隐藏文件夹,需要先开启显示隐藏文件夹。##.git文件夹被删除后整个文件对应的git仓库状态也会被清空##)
    • .gitignore文件作用是声明不被git记录的文件,blog根目录下的.gitignore是hexo初始化带来的,可以先删除或者直接编辑,对hexo不会有影响。建议.gitignore内添加以下内容:
      1
      2
      3
      /.deploy_git
      /public
      /_config.yml
    1. .deploy_git是hexo默认的.git配置文件夹,不需要同步
    2. public内文件是根据source文件夹内容自动生成,不需要备份,不然每次改动内容太多
    3. 即使是私有仓库,除去在线服务商员工可以看到的风险外,还有云服务商被攻击造成泄漏等可能,所以不建议将配置文件传上去
  2. 初始化仓库
    blog 根目录下执行以下代码:

    1
    2
    git init
    git remote add origin 'server'

注意: server 指的是 git版本的不是 https版本的。(此处没有单引号) origin是指本地分支, remote add操作会将本地仓库映射到云端。

  1. 添加本地文件到仓库并同步到git上
    1
    2
    3
    git add .  #添加blog目录下所有文件,注意有个`.`(`.gitignore`声明过的文件不包含在内)
    git commit -m "first commit" #添加更新说明
    git push -u origin master #推送更新到云端服务器

在执行这步之前一定要注意检查下.gitignore文件的内容,看看是否正确的把一些文件夹忽略掉了。如果加错了的话可以用
git rm -r —cached .
撤销添加操作。

以上 云端备份工作已经完成。

将git的内容同步到本地

假设之前将A电脑里的内容备份到git了,现在B电脑准备同步内容。

1
2
3
4
5
6
7
8
9
10
11
git init
git remote add origin <server> #将本地文件和云端仓库映射起来。这步不可以跳过
git fetch --all
git reset --hard origin/master
```

## 更新文章后的同步操作
假设在B电脑上写完了文章,也`hexo d -g`发布完了,这时候需要将新文章的md文件更新上去。(其实就是提交更新给git,会的可以无视了)
同一个bash界面下:
```git
git add .

这时候可以用git status查看状态,一般会显示刚刚更改过的文件状态。如:

1
2
3
4
5
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’文件。


然后对更改添加说明并推送到远程仓库.

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

当显示类似如下提示的时候,即表示备份成功

1
2
To git@git.oschina.net:xxxx/blog-backup.git
+ 2c77e1e...5616bc6 master -> master (forced update)

再到A电脑上的时候,只需要

1
git pull

即可同步更新~

给git配置sock5代理

由于某些众所周知的缘故,所以github时不时的有时候速度会很慢,这种情况下本地代理就派上用场了。
这里以给git的SSH传输方式配置本地SS代理为例说下配置过程:

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

    1
    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代理。

(っ•̀ω•́)っ✎⁾⁾ 坚持技术学习、内容输出与分享,您的支持将鼓励我继续创作!(*/ω\*)
( • ̀ω•́ )✧如有疑问或需要技术讨论,请留言或发邮件到 aclearzhang@qq.com.(*・ω< )