好久没用Github,这个博客也很长时间没有更新了,几乎已经被遗忘了。之前喜欢在工作之余利用Github来记一些笔记

,后来一方面因为工作类型的转换,从做算法研究写代码转到做项目管理,一下子从跟电脑打交道转变为更多地与人打交道,节奏变化了记笔记的方式也因此变化了;另一方面也是因为懒,年龄越大越不喜欢折腾。以前喜欢用Markdown做笔记,甚至用VSCode把Github作为自己的笔记本,后来工作之外的时间越来越少,而且大部分时间花在与人沟通上面,自然就少了很多精力去折腾笔记的形式了。这个时候简单易用最重要,试过很多笔记应用,最喜欢的还是Evernote,非常适合项目管理过程中做项目进度、项目会议、任务计划管理的相关笔记。不过有时间还是想通过markdown用博客的形式来记录一些经验心得,比如踩坑经历。

Table of Contents

当我准备在这个博客上重新更新的时候,发现之前很熟练的git命令和markdown tag忘得差不多了,果真是用进废退啊。在折腾更新博客主题时,踩了好些坑,在此记下来避免后续再遇到同类问题。

更新Hugo

升级CommandLineTools

因为这个博客是用Hugo搭建的,好久不用自然就想着先升级一下Hugo,运行

brew upgrade hugo

弹出如下错误信息:

Error: Your CLT does not support macOS 12.2.
It is either outdated or was modified.
Please update your CLT or delete it if no updates are available.

因为Homebrew是需要CommandLineTools的,这里提示CLT过时了,通过删除和重新安装xcode-select可以解决此问题:

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

更新Homebrew

更新软件包之前,最好还是先升级一下Homebrew,于是运行

brew update

又报错

cannot open .git/FETCH_HEAD: Permission denied

查了一下stackoverflow,这个错误是因为我在Mac上用了跟之前安装Homebrew不一样的用户,而涉及Homebrew的多用户使用需要做一些复杂的配置,而我不想把时间花在这个上面,于是切回到之前的Mac用户来升级Homebrew,顺便升级所有软件包,依次执行:

brew update
brew upgrade

这里需要提醒的是,要根据所在地考虑更换Homebrew镜像源,比如在国内可以更换为科大或者阿里的镜像源,运行上面命令时会快一点。

配置成阿里镜像源,用

  • https://mirrors.aliyun.com/homebrew/brew.git
  • https://mirrors.aliyun.com/homebrew/homebrew-core.git

如果需恢复镜像源配置,则将命令中的git URL换成

  • https://github.com/Homebrew/brew.git
  • https://github.com/Homebrew/homebrew-core.git

并且删除下面的HOMEBREW_BOTTLE_DOMAIN即可。

配置镜像源依次执行以下命令:

cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git

brew update

然后在.zshrc中增加HOMEBREW_BOTTLE_DOMAIN配置:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

更新Hugo博客主题

Github Personal Access Token

Hugo主题网站上看到我用的主题hugo-tranquilpeak-theme有更新,于是就决定最好更新一下博客主题,而且最新版可以支持评论模块,比如disqus.

在命令行运行git pull先更新一下本地的博客管理blog repo(这个和博客发布的repo不一样,注意区别),结果发现Github的认证已经过期了(实在是太久没上Github了。。)

blog on main 
❯ git pull
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/lijqhs/blog.git/'

看了一下提示信息中的链接,从2021年8月13日开始,Github不再支持账号密码方式的身份验证,而要使用基于个人访问令牌进行身份验证,也就是说在命令行中运行git clone输入账号密码时,不能简单输入用户名和密码,而要输入用户名和令牌的那一串码。

在Github账号设置中的Developer settings下的Personal access tokens中创建新的token,可以选择权限和时间长度。

更新子模块submodule

由于主题是通过git submodule的方式放在博客管理repo下的,所以现在需要用submodule来更新。之前的文章有详细的submodule讲解,幸好之前花了点时间记录下了配置的细节,为现在的troubleshooting省了很多时间。

更新submodule的命令很简单:

git submodule update --init

重新部署博客

既然博客主题更新好了,那么采用Hugo博客主题下exampleSite的最新版配置文件config.toml进行重新配置也很有必要。然后基于新版Hugo和新版主题重新部署博客就是一句命令的事:

zsh deploy.sh

然而在这之前,我做了一件傻事,让我又绕了一个小弯,从而让这篇文章又增加了以下的文字。我想既然主题更新了,重新部署的时候可能会跟之前的public(指向博客发布repo:lijqhs.github.io的目录)不一样可能让文件变得混乱,那么我最好先把旧版的lijqhs.github.io的repo先清空,然后再做rebuild,我当时还为自己的谨慎感到佩服。于是先git clone lijqhs.github.io.git到本地,delete掉几乎所有文件,只留了readme,git commitgit push,只用了不到一分钟。

然后运行zsh deploy.sh,按理说只需几秒即可完成,毕竟快就是Hugo最大的优势。

Hugo: The world’s fastest framework for building websites

结果报了错:HEAD detached from 0b73022。看到这个就意识到前面单独清空的操作很不合适很不专业,不过不算麻烦,切换到public目录下,进行以下操作即可解决:

git branch temp
git checkout main
git merge temp

至此,博客主题更新好了,又可以继续在本地写博客了,要记得常写哦。。