多端同步个人博客

中心思想

  1. 远程仓库有一个 origin,其包含两个分支

    • 远程hexo 分支负责存储博客的源代码
    • 远程master 分支负责存储博客的静态文件
  2. 本地包含两个仓库,分别负责对应维护远程的两个分支

    • 本地hexo 分支(源代码文件仓库)对应远程hexo分支,.git仓库应放于博客根目录下面
    • 本地master分支(静态文件仓库)对应远程的master分支。master 分支是通过 博客根目录下面的 .deploy_git静态文件夹中的 .git仓库维护。其推送也是通过 hexo deploy 命令执行。
    • 如果人工 进行 git pull master 命令会提示 refusing to merge unrelated histories。大意是拒绝合并没有历史关联的分支相合并。git push 操作自然也会被拒绝

执行过程

远程仓库建立

远程 github 新建好个人博客如 dir.github.io,并执行 choose a theme → select theme 等操作,来生成 github pages

本地新建个人博客(静态文件仓库)
  1. npm install -g hexo (已安装了就不需要再次安装)
  2. 本地 新建 dir.github.io 目录,在该目录下执行 hexo init 命令,新建网站
    执行 cnpm install --save hexo-deployer-git 命令,以便执行 hexo deploy 命令向远程仓库推送本地静态博客文件
  3. 配置 _config.yml 文件,关联本地 静态文件仓库 与 远程仓库

    1
    2
    3
    4
    deploy:
    type: git
    repo: git@github.com:dir/dir.github.io.git
    branch: master
  4. 这一步与以往的新建个人博客并无二致,如果想要推送自己的源代码文件,继续向下执行命令就好。上面执行好后,接下来可以写文章了

源代码仓库创建
  1. dir.github.io 目录下执行 git init 命令
  2. 新建本地分支 git checkout -b hexo 分支,继续执行 git add . | git commit -m 等操作,提交本地历史记录。
    这样 dir.github.io 中的所有文件(源代码文件)已被提交到本地历史记录当中。
    接下来只需要 将这个分支推送到远程分支即可
  3. 执行 git remote add origin url 命令,将本地 源代码仓库 与 远程仓库 建立链接
  4. 执行 git push -u origin hexo 命令,将本地 源代码文件 推送到远程仓库
  5. 远程仓库现在 便有两个分支了。将 远程 hexo分支 设置为默认分支。这样其它电脑 git clone 时,下载的便是源代码文件了

总结以上

  1. dir.github.io 目录 —— 博客源代码文件 —— .git 源代码仓库 —— 远程hexo 分支
  2. dir.github.io > .deploy_git 目录 —— 博客生成的仓库 —— .git 静态文件仓库 —— 远程 master 分支
  3. 我们所有的命令行操作全部都是在 dir.github.io 根目录下执行的。无论是哪一个仓库。
  4. git push 推送hexo分支源代码;hexo deploy 推送master静态文件

维护

  1. 新建文章
    dir.github.io 目录下 hexo new "title"hexo g -d
  2. 推送源代码
    git push

多端同步

  1. git clone 远程仓库,执行 npm install 安装依赖
  2. 正常的新建文章 推送文章。
  3. hexo g -d推送文章之后,git push 推送源代码仓库
  4. 其它电脑 新建文章之前,先 git pull,之后从第二步开始

注意事项

  1. 下载其它主题文件至 themes 文件夹的时候,注意将主题文件夹中的 .git 仓库删掉。
  2. 这个涉及到 git 的 submodule 知识,详细的可以看这里 Git submodule实战