Natu Matu
文章65
标签20
分类4
本站总访问量
本站访客数人次
云端化:博客多终端协同部署

云端化:博客多终端协同部署

全流程将一个本地博客变成一个云端博客

前言/逻辑图解

  马上就要放假离开实验室了,在这期间虽然也能通过离线写MD来记录自己的所思所想。但长远一想,这里是一辈子的事情,我不可能以后都依赖某一台电脑进行博客的更新,所以便想到了将自己的博客源代码一样也上传到云端保存,这样哪怕随手拿到一台电脑,稍微配置一下也能开始进行写作,于是便有了这一篇笔记

构思与实现逻辑

上传源码到云端

操作前提
本地博客可以通过hexo正确部署到对应web
正确安装git并配置好环境变量

方法一:新建仓

  1. 云端:在GitHub上new 一个新的代码仓:需要在GitHub上创建一个用于存储源码的库,建议最好选择 “private” 不要公开,除非你博客的所有内容打算完全公开。
  2. 本地:
    • 打开你的本地博客目录,目录下有一个 “.gitignore” 文件,没有就自己创建一个,该文件用于忽略指定的文件不进行同步,根据你的要求进行配置。一般配置内容如下:
      1
      2
      3
      4
      5
      6
      7
      .DS_Store
      Thumbs.db
      db.json
      *.log
      node_modules/
      public/
      .deploy*/
    • 右键打开git,依次输入命令与你的远程仓库连接
      1
      2
      3
      4
      5
      6
      7
      8
      9
      # 初始化本地仓库
      git init

      # 本地仓库和GitHub远程仓库对接
      # nineya/blog_source.git修改为准备用于存放源码的仓库名
      git remote add origin git@github.com:github use name(Owner)/Repository name.git

      # 查看远程仓库地址,验证配置是否正确
      git remote -v
      result
    • 源码提交
      1
      2
      3
      4
      5
      6
      7
      8
      9
      # 下拉同步远程库上的数据,否则无法提交,后缀为无视时间差(无时间bug可不带)
      git pull origin master --allow-unrelated-histories

      # 将所有文件添加到本地仓库:git add -A(全部放入本地仓库)/git add . (修改放入本地仓库)
      git add -A

      # 提交到远程仓库
      git commit -m "博客源文件"
      git push

方法二:新建分支

  1. 远程分支:maser、hexo存放不同文件内容。
    • hexo分支:存放本地文件,包括建站所需的配置文件、资源文件夹、主题文件夹、模板文件夹等,具体如下:【注】这里没有public文件夹,其实本地执行hexo d -g 发布命令会将由md文件渲染的静态文件放入public中。
      文件框架如下:
      ├── _config.yml 配置信息,在此配置大部分的参数
      ├── package.json 应用程序的信息。EJS, Stylus 和 Markdown renderer 已默认安装
      ├── scaffolds 模版文件夹
      ├── source 存放用户资源的地方
      | ├── _drafts
      | └── _posts
      └── themes 主题 文件夹
  2. 具体步骤
    1. 旧的设备做好备份本地文件到远程的hexo分支下,假定旧的设备是自己以及搭建hexo博客成功到master上了。做完Github Pages页面了。所以master分支下已有hexo生产的静态文件等。
      1
      2
      3
      4
      5
      6
      7
      git init  //初始化本地仓库
      git add source //将必要的文件依次添加,有些文件夹如npm install产生的node_modules由于路径过长不好处理,所以这里没有用`git add .`命令了,而是依次添加必要文件,如下图所示.使用git add -A 可以自动把node_modules文件夹忽略。选择依次add或add -A都可以,下面图是add -A提交后的,测试是可以的
      git commit -m "Blog Source Hexo"
      git branch hexo //新建hexo分支
      git checkout hexo //切换到hexo分支上
      git remote add origin git@github.com:yourname/yourname.github.io.git //将本地与Github项目对接
      git push origin hexo //push到Github项目的hexo分支上

新设备连接云端

前提

  1. 新设备正确安装git、nodejs
  2. 配置好git npm环境变量
  3. 将新电脑的生成的ssh key添加到GitHub账户上
    • 首先在本地创建 SSH Keys:
      1
      $ ssh-keygen -t rsa -C “xxxx@xx.com“
    • 成功的话会在 ~/下生成 .ssh文件夹,进去,打开 id_rsa.pub,复制里面的key即可。然后拷贝到 Github 的 SSH Keys(这里要添加一个新的)
    • 然后在终端中,我们再次测试下公钥有没有添加成功:ssh -T git@github.com
    • 会弹出确认命令,输入yes,会弹出Hi,你的名字等等,这就代表成功了
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # 克隆博客源码到本地(顺便与相应分支产生了连接)
      git clone git@github.com:631212502/blog_source.git blog

      # 打开博客根目录
      cd blog

      # 安装对应npm的资源包依赖
      npm install

      # 安装hexo
      npm install hexo-cli -g //如果出错,
      npm install -g hexo 或者sudo npm install -g hexo

完毕:更新迭代

设备每次使用或者更新blog 都参照以下流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#1.下拉同步仓库分支:注意本地和远程的映射关系
git pull origin main/master --allow-unrelated-histories #在pull之前建议不要改动或者先将改动commit到本地仓库,避免覆盖

#2.Add提交改动:最好采用合并分支的方式实现提高代码的安全性
git add -A # 简单改动使用:git add .
git commit -m "博客源文件"

#3.推动到远程仓库实现源码更新
git push

#4.hexo更新博客
hexo clean
hexo g
hexo d

附录:常用的git操作命令

可视化版可以使用小乌龟

Git 命令初识

示例:从Git 版本库的初始化,通常有两种方式:
git clone: 简单的初始化方式,有一个远程的Git版本库,只需要在本地克隆一份就可以完成连接
例如:git clone git://github.com/someone/some_project.git some_project
上面的命令就是将’git://github.com/someone/some_project.git’这个URL地址的远程版本库,完全克隆到本地some_project目录下

git init 和 git remote: 这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用’git init’命令进行初始化;Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建一个目录,并把可访问的URL记录下来,此时你就可以利用’git remote add’命令来增加一个远程服务器端,
例如:git remote add origin git://github.com/someone/another_project.git
上面的命令就会增加URL地址为’git://github.com/someone/another_project.git’,名称为origin的远程服务器,以后提交代码的时候只需要使用 origin别名即可

Git 常用命令以及速查表

Git Context
git branch -v/a/vv 查看本地/远程/所有/映射分支
git status 查看当前git控制版本情况,有无提交
git commit -m””/-v 提交改动/查看提交差异
git remote add origin git@
git push origin XXXX(分支名称) 推送到远端服务器
git remote show origin 显示远端仓库内容
git push origin master: dev 本地与远端连接
git checkout –track origin/dev 切换到远程dev分支
git branch -D master develop 删除本地库develop
git checkout -b dev 切换并建立(-b)一个新的本地分支dev
git merge origin/dev 将分支dev与当前分支进行合并
git config –list 看所有用户
git ls-files 看已经被提交的
git commit -a 提交当前repos的所有的改变
git add [file name] 添加一个文件到git index
git log 看你commit的日志
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
git pull 本地与服务器端同步
git push origin server fix:awesome branch git push (远程仓库名) (分支名) 将本地分支推送到服务器上去

远程仓库使用

1
2
3
4
5
6
7
8
9
10
11
12
检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]

想提交本地的某个分支test到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:

$git push origin test:master // 提交本地test分支作为远程的master分支
$git push origin test:test // 提交本地test分支作为远程的test分支

分支操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name] 或 $ git push origin :[name]
创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)
$git symbolic-ref HEAD refs/heads/[name]

$rm .git/index

$git clean -fdx

版本命令

1
2
3
4
5
6
7
8
9
查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
合并远程仓库的tag到本地:$ git pull origin --tags
上传本地tag到远程仓库:$ git push origin --tags
创建带注释的tag:$ git tag -a [name] -m 'yourMessage'
本文作者:Natu Matu
本文链接:https://631212502.github.io/2022/01/16/%E4%BA%91%E7%AB%AF%E5%8C%96%EF%BC%9A%E5%8D%9A%E5%AE%A2%E5%A4%9A%E7%BB%88%E7%AB%AF%E5%8D%8F%E5%90%8C%E9%83%A8%E7%BD%B2/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×