基本问题描述
因为 GitHub 网络不稳定问题,在使用 Gridea 同步进行上传时会存在上传失败情况
解决方案
简单理解,GitHub Pages 即为每一个 GitHub 用户提供一个免费的网址,该网址使用 GitHub Pages 对应库中的资源进行生成页面。在博客制作过程中 Gridea 扮演了将用户制作的 Markdown 文档渲染成 GitHub Pages 所需资源的角色。
对 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 "添加修改"
链接远程 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 构建博客的细节,此处不再赘述。
FROM:https://blog.csdn.net/qq_45394976/article/details/127678924?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-127678924-blog-122635396.pc_relevant_aa2&spm=1001.2101.3001.4242.1&utm_relevant_index=3
文件管理器中右键,点击 Git Bash Here,在弹出的窗口中输入:
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub邮箱"
git config --global credential.helper store
之后到仓库右上角的 Clone or download 那里,复制仓库链接(建议使用 HTTPS):
第二种办法(截取一部分),原链接https://github.com/ihewro/Blog-With-GitHub-Boilerplate
在命令行中输入:
git clone <仓库链接>
若需要输入用户名密码则输入就行。这样仓库就克隆到了本地。在仓库中进行修改后,这样提交文件:
cd 到仓库文件夹后
git add .
git commit -m "添加修改"
git push
这样本地的修改就推送到了 GitHub。
——————————————————————————————————————
还有一种情况是GitHub Token 过期了,也会导致同步失败
生成新的 GitHub Token 有两种方式,Gridea 同步优先用经典 Token(Classic) 快速配置,追求安全用细粒度 Token(Fine-grained) 精准控权,以下是详细步骤与 Gridea 适配建议:
一、通用入口(先进入 Token 管理页)
1,登录 GitHub,点击右上角头像 → Settings。
2,左侧菜单拉到底,点击 Developer settings。
3,进入 Personal access tokens,选择 Tokens (classic) 或 Fine-grained tokens。
二、生成经典 Token(Classic,推荐 Gridea 用)
1,点击 Generate new token (classic)。
2,填写基础信息:
Note:写清楚用途(如 “Gridea 同步博客”),方便后续管理。
Expiration:选过期时间(7/30/90 天或自定义,安全优先选短期)。
3,勾选权限(Gridea 必需):
核心勾选 repo(会自动选中子权限,满足仓库读写、部署)。
4,若用 GitHub Actions 部署,额外勾选 workflow。
5,点击 Generate token,立即复制并保存(仅显示一次,丢失需重新生成)。
6,更新到 Gridea:设置→远程→GitHub,粘贴新 Token,保存后测试连接。
直接把这条命令粘贴到终端(Windows 用命令提示符 / PowerShell,Mac/Linux 用终端)执行就行。
换下面的 PowerShell 专用命令执行即可
Invoke-WebRequest -Uri https://api.github.com/repos/zhiyu2011/zhiyu2011.github.io -Headers @{Authorization="token ghp_OlXA5eXMgzSaqU31lSF3l"}
执行后看返回的状态码:
出现 StatusCode: 200 → Token 有效且权限足够
出现 StatusCode: 401 → Token 无效 / 过期
出现 StatusCode: 403 → Token 权限不足