基本问题描述
因为 GitHub 网络不稳定问题,在使用 Gridea 同步进行上传时会存在上传失败情况
解决方案
简单理解,GitHub Pages 即为每一个 GitHub 用户提供一个免费的网址,该网址使用 GitHub Pages 对应库中的资源进行生成页面。在博客制作过程中 Gridea 扮演了将用户制作的 Markdown 文档渲染成 GitHub Pages 所需资源的角色。
查阅 Gridea 项目文档 发现,Gridea 在 0.9.3 版本更新中对博客本地存储结构做了改变。
即 Gridea 渲染后文件将会存储在文件夹 ~/.gridea/output 中:其文件夹内容:
对 Gridea 功能进行尝试,发现其预览功能会对当前文件进行渲染,并将渲染后资源存储于文件夹 ~/.gridea/output 中(该操作会清空文件夹中原有 Git 库信息)。而同步功能则会在渲染基础上,根据系统预设远程链接信息重新创建 Git 库,同时将其整合成一个 commit 提交至远程 GitHub 仓库。
由于同步功能因为网络不稳定问题会存在上传失败情况(同时提交时会覆盖此前 commit 记录),故考虑不使用同步功能,只使用预览功能执行渲染(即仅将 Gridea 客户端作为静态渲染器),待渲染完成后再对文件夹 ~/.gridea/output 中文件资源使用 Git 手动提交至远程仓库。
更新:后续发现使用预览功能时,Gridea 渲染得到页面中会使用本地 url,从而导致在GitHub Pages 博客中因各跳转链接为本地 url 而无法正常跳转到各子页面,故在使用时仍需选择同步功能进行渲染,为防止意料之外的上传成功,此处需在选择同步按钮进行渲染时断开网络或直接修改远程设置中令牌为错误令牌。
手动上传过程
首先点击预览按键进行渲染,渲染后生成文件位于 ~/.gridea/output 文件夹
此后使用 Git 进行手动上传,使用 VS code 打开~/.gridea/output 文件夹,此后选择 终端 -> 新建终端打开终端。(此处使用 VS code 终端进行操作,其他命令行工具亦可)
更新:由于使用同步功能会在 output 文件夹下创建 Git 仓库,故此处应先删除现有本地库后再重新进行初始化
执行命令行语句删除本地仓库,即删除 output/.git 文件夹(此处为 win10 powershell 指令操作)
Remove-item ./.git
创建本地 Git 库,并将资源推送到本地库当前分支(此处 xx 即为该次提交名称)
git init
git add .
git commit -m "xx"
链接远程 GitHub 库 (此处 ~ 指代 GitHub 库名称),此处可能需要进行登录操作
git remote add origin ~.git
重命名当前分支,此处我将更新的分支统一命名为 Gridea,其余命名亦可
git branch -m master Gridea
拉取远程库中最新版本,并将其设为当前分支
git fetch origin master:master
git checkout 'master'
对本地分支进行合并,将 Gridea 分支(本地最新分支)合并进 master 分支(远端拉取得到分支),此处采用 theirs 合并策略,即当出现冲突时以 Gridea 分支(本地最新分支)内容为准进行修改
git merge -s recursive -X theirs --allow-unrelated-histories Gridea
提交至远端库
git push -u origin master
输出参考
至此,手动上传已经完成。至于使用 Gridea + GitHub Pages 构建博客的细节,此处不再赘述。详情可参考 Gridea 上手教程——小白也可以用的 GitHub Pages 搭建工具