自从博客从Jekyll迁移至Hugo之后,仓库的位置也发生了变动。记录一下,以备查看。


2022年02月07日

仓库说明

我的博客仓库发生过两次大的变动,第一次是从Jekyll迁移到Hugo,第二次是从Git Pages(包括Github和Coding)部署迁移到Vercel部署。于是我现在有3个博客仓库。

  • 仓库一、第一次迁移之前的博客仓库保留在GitHub上,命名为"blog_jekyll"。

  • 仓库二、第二次迁移之前的博客仓库保留在Gitee上,命名为"HugoBlog"。
    共有18次提交,最后一次提交HashID:9583d5637dad27d66850abcf6c1f15e8edb9c622, 提交内容为“修改: README.md 加入“Daily Life”分组”。
    此仓库使用Hugo生成静态博客页面,主题使用even,采用了submodule方式引用主题仓库。

  • 仓库三、第二次迁移之后的博客仓库托管于Github上,命名为"HugoBlog",共有7次提交。
    此仓库删除了之前的提交记录,大概是因为将博客部署在Vercel上的时候, 主题even使用git submodule不成功,具体原因想不起来了。
    此时依旧使用Hugo生成静态博客页面,主题使用even,但是引用主题方式改成了将主题 文件下载到本地,使用主Git仓库来追踪主题文件版本。

仓库重整

现在我来重新设计一下博客仓库,原因有两个:

  • 一、删除原来的Git提交历史绝对是一个非常不科学的做法,所以现在想和保留着之前 提交记录的仓库合并。也就是合并仓库二和仓库三。
  • 二、使用主Git仓库来追踪主题文件,使得更换主题的灵活性降低,仓库臃肿冗余。

解决方案

  1. 克隆仓库二和仓库三到本地,分别命名为blog_gitee和blog_github。
  2. 进入blog_gitee,以此仓库为基准,加入新的提交,首先新建一个分支命名为"combine"。
  3. 将blog_github以远程仓库的形式添加进来。
  4. 拉取github内容到本地,但不合并"fetch"。
  5. 尝试合并拉取过来的内容到新的分支,此时肯定会有很多冲突,需要手动解决。
  6. 解决冲突后,提交最新的内容即可。
  7. 认为此分支没有问题了,就可以合并到主分支中了。

以上过程的命令如下:

1
2
3
4
5
6
7
8
9
git clone https://github.com/resonweb/HugoBlog.git blog_github
git clone https://gitee.com/resonhou/HugoBlog.git blog_gitee
cd blog_gitee && git checkoub -b combine
git remote add blog_github ../blog_github
git fetch blog_github
git merge blog_github/main --allow-unrelated-histories 
# 解决冲突
git add -A
git commit

解决冲突

解决冲突最好的方式是使用VSCode提供的工具来识别在merge过程中git在文件中标出的冲突位置,然后统一采用blog_github中的修改即可。当然也可以手动修改文件内容,这个时候要学会认识git标记冲突的格式,可以参看这篇文章。而关于 git diff 的格式则可以参看这篇文章

不好处理的位置是主题目录,因为在blog_github中有对主题文件的追踪,所以要用 git rm -rf themes/even 来删除对主题文件的追踪。

添加子模块

1
git submodule add <url> <path>

因为我想要使用修改后的主题文件,所以不能直接使用even作者的原始仓库,我需要fork一份出来,我准备放两个submodule进来,一个指向原始仓库,一个指向我自己fork出来的主题(其实没必要,只需要将我自己fork出来的仓库本地目录重命名为"my-even"即可)。这个仓库要托管在github上,因为vercel(国外网站)可能与github的连接速度更快一些。测试中托管在Gitee上面的submodule在Vercel上也成功了。


2021年8月18日

看了《vercel是什么神仙网站?》,决定把站点部署在Vercel

现在只需要将内容提交到Github/HugoBlog仓库,但是even主题代码要在这个仓库里面,不再需要子模块了。同时将public列入gitignore。Vercel会自动感知提交,并用Hugo生成站点,然后自动部署。


2021年8月3日

因为码云Gitee不支持自定义域名(收费),所以一直不想用。而且大家对我现在的博客域名已经有了书签,不便再变更,所以先这样吧。 现在Gitee正在升级维护,等年底它把这个服务开了之后,转过来也行。

该死的Coding天天更改业务逻辑,甚至有一段时间还停止了网站托管服务,最是不能忍。不过国内的代码托管服务商也就只有这两家可以用,别的也没有选择了啊。

现在博客仓库分为一人主仓库,两个子仓库。

  1. 主仓库:放置文章内容源码以及辅助文件。
  2. 子仓库一:Public 放置布署的成品页面。
  3. 子仓库二:Theme 放置模板。

主仓库

同步在Coding HugoBlog项目中的HugoBlog仓库。
在Gitee上有HugoBlog仓库的备份。

子仓库:Public

同步在Coding HugoBlog项目中的hugoblog-deployed仓库。

子仓库:Theme

Fork 自 https://github.com/olOwOlo/hugo-theme-even, 现在同步在Gitee 上的 hugo-theme-even 仓库。