记折腾博客(二)

· 729 words · 4 min

The content of this article has been deprecated and its content may be out of date. No longer updated, for reference only.

继续上篇。

在所有的东西都配置好之后,运行 hugo 命令即可在 public 目录下构建出网站内容。静态站点需要将 public 目录作为网站的根目录进行部署。我的想法是,一份部署在国外 GitHub 上,一份部署在国内 gitee 上,这样一来除了可以做备份之外,还可以将 gitee 上的站点作为镜像,这样如果主域名访问较慢的情况下,可以切换到速度较快的国内站点进行访问。

在将博客仓库推到 GitHub 之后,发现 GitHub 貌似没有提供自定义部署文件夹的功能,只有指定的 /root 或者 /doc 两个选择。那么解决方法有两个,要么将打包后的目标文件夹从 public 改为 doc,要么想办法把 public 文件夹作为一个仓库进行部署。

在网上查阅发现,git 可以将指定的文件夹拷贝到另一个新分支,也就是使用 git subtree 命令。因此我打算将 public 的内容作为新分支 deploy 进行部署,使用以下命令:

git subtree push --prefix public origin deploy

执行完命令后,本地和远程仓库都有了 deploy 分支,并且分支内容和 public 完全一致。

更新:之前使用的 git subtree 方法由于 push 时经常 conflict 因此废弃掉,换做部署 /docs 文件夹的方式,具体操作步骤可以查看这篇文章

之后进行域名绑定,在阿里云上添加了 A 记录和 CNAME 记录,然后将 IP 地址和域名分别指向 GitHub 的 IP 和 GitHub 为我的博客仓库分配的预览地址。

可以使用 ping github.com 命令来获取 GitHub 的 IP 地址

还有一个问题,如何使本地仓库同步到两个远程仓库呢?在我网上查阅发现,只需要在本地仓库下的 .git/config 下添加第二个远程仓库的 url 即可,我打开 git config 发现内容如下:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[user]
    name = CaptainOfPhB
    email = xxxxxxxx@gmail.com
[remote "origin"]
    url = git@github.com:CaptainOfPhB/captainofphb.github.io.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "deploy"]
    remote = origin

那么只需要在 remote.origin.url 下面再添加一条远程仓库的 url 即可,这样就可以把本地仓库同步到两个远程仓库:

[remote "origin"]
  url = git@github.com:CaptainOfPhB/captainofphb.github.io.git
  url = git@gitee.com:<user_acount>/<repository_name>.git
  fetch = +refs/heads/*:refs/remotes/origin/*

添加完之后,使用 git remote -v 进行查看,打印出:

origin  git@github.com:CaptainOfPhB/captainofphb.github.io.git (fetch)
origin  git@github.com:CaptainOfPhB/captainofphb.github.io.git (push)
origin  git@gitee.com:<user_acount>/<repository_name>.git (push)

这表示第一个 url 地址 git 用来做 fetch 或 pull,第二第三用来做 push 同步。

然后运行 git push 之后,发现仓库会同步到 gitee 了。然后在 gitee page 上进行配置,选择 deploy 分支直接 docs 子目录进行部署即可,与 GitHub 类似。

你可以点击 daijiangtao.namedaijiangtao.gitee.io 访问我的博客。

完。

Chore