news 2026/9/27 23:49:07

ChatGPT-Shortcut 同步更新指南:用 Fork 与 GitHub Actions 让站点每日自动跟随上游

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ChatGPT-Shortcut 同步更新指南:用 Fork 与 GitHub Actions 让站点每日自动跟随上游
  • AI 应用
  • 提示工程
  • 人工智能
  • 前端

【免费下载链接】ChatGPT-Shortcut

Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库

项目地址:https://gitcode.com/gh_mirrors/ch/ChatGPT-Shortcut
点击查看免费下载

ChatGPT-Shortcut(AI Short)是一套可搜索的提示词库站点,支持本地构建、Vercel、Cloudflare Pages 与 Docker 等多种部署方式。本文以仓库文档 i18n/vi/docusaurus-plugin-content-docs/current/deploy/sync-updates.md(内容与 docs/deploy/sync-updates.md 一致)为核心,解决一个真实痛点:为什么 Vercel 一键部署的站点会一直提示"有更新",以及如何通过 Fork + GitHub Actions 实现每天自动跟随上游更新。读完本文,你将掌握从"新建项目部署"切换到"Fork 部署"的完整三步流程、自动同步工作流的源码级原理、以及手动同步与故障排查的实操方法。

问题根源:Vercel 一键部署为什么永远提示"有更新"

很多用户通过 Vercel 的一键部署(Deploy to Vercel)把 ChatGPT-Shortcut 部署成自己的站点,随后发现界面长期提示"存在更新",但无论怎么刷新都无法消除。原因是:

  • Vercel 的一键部署默认是新建项目(import project),而不是fork本仓库;
  • 新建项目与原仓库之间不存在 fork 关系,GitHub 无法为它计算与上游(upstream)的提交差异,自然也就检测不到上游更新。

这一点可以从本仓库的自动化配置得到佐证。仓库中的 .github/workflows/rsync.yml 是整个"Upstream Sync"自动同步工作流,它的同步任务带有一个关键条件:

jobs: sync_latest_from_upstream: runs-on: ubuntu-latest if: ${{ github.event.repository.fork }}

也就是说,只有 fork 仓库才会执行自动同步。Vercel 新建的项目不是 fork,github.event.repository.fork恒为false,自动同步永远无法启动。这就是"一直提示更新"的技术根源。

因此,修复思路非常明确:放弃"新建项目"模式,改为 fork 之后从 fork 仓库部署。

修复三步:从"新建项目"切换为"Fork 部署"

按照文档给出的方案,只需三步即可根治:

  1. 删除原仓库:删除此前由 Vercel 一键部署创建的仓库,避免后续误用;
  2. Fork 本项目:点击本仓库页面右上角的Fork按钮,将 ChatGPT-Shortcut fork 到自己的账号下;
  3. 重新部署:在 Vercel 的新项目页面,通过Import Git Repository重新选择刚才 fork 的仓库并完成部署。

完成这一步之后,你的站点源码就来自一个真正的 fork 仓库。值得注意的是,这一步也正是 docs/deploy/standard.md 所描述的标准部署流程的起点——该文档要求"先 fork 本项目,再选一种方式部署",且支持本地构建、Vercel、Cloudflare Pages 与 Docker 四种方式,并要求 Node.js 20.0 或更高版本(与 package.json 中engines.node: ">=20.0"一致)。

开启自动更新:GitHub Actions 每日同步

Fork 部署完成后,站点源码仍然不会自动跟随上游——还需要开启自动同步。操作分两步:

  1. 手动启用 Workflows:fork 仓库后,GitHub 默认不会自动运行仓库内的 Actions 工作流,需要进入 fork 仓库的Actions页面手动启用(Enable workflows);
  2. 手动运行一次 Upstream Sync action:在 Actions 页面找到 Upstream Sync 工作流并手动触发一次,验证同步链路可用。

启用之后,项目会每天自动同步一次上游更新,无需任何人工干预。

文档还特别强调了一条注意事项:

如果遇到 Upstream Sync 执行错误,请手动执行一次 Sync Fork!

这条注意事项并非空穴来风,它直接对应工作流源码中同步失败时的处理逻辑(详见下文)。

Upstream Sync 工作流源码解析

自动同步的核心实现位于 .github/workflows/rsync.yml,其完整逻辑如下:

name: Upstream Sync permissions: contents: write on: schedule: - cron: "0 0 * * *" # every day workflow_dispatch: jobs: sync_latest_from_upstream: name: Sync latest commits from upstream repo runs-on: ubuntu-latest if: ${{ github.event.repository.fork }} steps: # Step 1: run a standard checkout action - name: Checkout target repo uses: actions/checkout@v6 # Step 2: run the sync action - name: Sync upstream changes id: sync uses: aormsby/Fork-Sync-With-Upstream-action@v3.4 with: upstream_sync_repo: rockbenben/ChatGPT-Shortcut upstream_sync_branch: main target_sync_branch: main target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set # Set test_mode true to run tests instead of the true action!! test_mode: false - name: Sync check if: failure() run: | echo "::error::由于权限不足,导致同步失败(这是预期的行为),请前往仓库首页手动执行[Sync fork]。" echo "::error::Due to insufficient permissions, synchronization failed (as expected). Please go to the repository homepage and manually perform [Sync fork]." exit 1

逐项解读这份工作流,可以回答文档中没有展开的所有细节:

  • 触发时机:schedule中的cron: "0 0 * * *"表示每天 UTC 零点定时执行;同时声明了workflow_dispatch,允许你在 Actions 页面手动触发——这正对应文档要求的"手动跑一次 Upstream Sync Action"。
  • 执行条件:if: ${{ github.event.repository.fork }}保证只有 fork 仓库才会同步,这也是前文所述"一键部署新建项目无法自动同步"的源码依据。
  • 同步动作:使用第三方 actionaormsby/Fork-Sync-With-Upstream-action@v3.4,配置的上游是rockbenben/ChatGPT-Shortcut的main分支,目标是你 fork 仓库的main分支。
  • 令牌:target_repo_token: ${{ secrets.GITHUB_TOKEN }}是 Actions 自动生成、无需手动配置的令牌,它负责把上游提交写入你的 fork。
  • test_mode:test_mode: false表示执行真实的同步操作,而非仅做测试。
  • 失败兜底:最后一步Sync check在同步失败时输出明确的中英文错误提示——"由于权限不足,导致同步失败(这是预期的行为),请前往仓库首页手动执行 [Sync fork]"——并exit 1让任务标记为失败。这正是文档中"遇到 Upstream Sync 执行错误,请手动执行一次 Sync Fork"的出处。

遇到 Upstream Sync 报错怎么办:手动 Sync Fork

从工作流源码可以推断,Upstream Sync 报错通常发生在以下场景:

  • 你的 fork 上存在上游没有的提交(例如你做过自定义修改),与上游历史产生分叉;
  • 上游历史被改写(rebase / force push),导致自动同步无法干净地合并。

在这些情况下,自动生成的GITHUB_TOKEN权限不足以完成强制同步,失败是预期行为而非工作流损坏。此时需要人工介入:

  1. 打开你的 fork 仓库首页;
  2. 点击页面上的Sync fork按钮(GitHub 的 Fetch upstream → Fetch and merge 功能)手动同步一次;
  3. 同步成功后,后续每日定时任务会恢复自动执行。

如果你习惯命令行操作,也可以在本地方便地完成等效同步(标准 Git fork 操作):

git remote add upstream <上游仓库地址> # 首次需添加 upstream 远程 git fetch upstream git checkout main git merge upstream/main git push origin main

手动更新:想立刻拿到最新功能

自动同步是每天一次,如果你不想等,可以随时手动更新:

  • 界面方式:在 fork 仓库首页点击Sync fork(Fetch upstream → Fetch and merge),立即把上游最新代码拉进你的 main 分支;
  • 通知方式:为 ChatGPT-Shortcut 项目star / watch,及时获得新功能更新通知,第一时间了解上游发布了什么。

手动同步与自动同步最终写入的都是 fork 的main分支,两者是等价的,可以按需混用。

同步之后:上游更新如何抵达你的站点

自动同步把上游的新提交推到 fork 的main分支后,更新并不会自动"出现"在站点上,还需要你的部署链路响应这次 push:

  • Vercel / Cloudflare Pages 等平台部署:如果你的部署绑定的是 fork 仓库,push 到main会触发平台自动重新构建与部署。以 Cloudflare Pages 为例,docs/deploy/standard.md 明确说明"之后每次推新代码会自动触发构建和部署"。
  • 本仓库自带的 CI:.github/workflows/main.yml 会在 push 到main时自动执行:先用fetch-depth: 0拉取完整 git 历史(保证showLastUpdateTime等依赖历史记录的功能稳定),再安装 Node.js 24 与 yarn 缓存,执行yarn install --frozen-lockfile和yarn build(实际构建入口是 package.json 中的node scripts/buildPhased.mjs)。仓库内的 GitHub Pages / FTP 部署步骤以注释形式保留,需要时可自行开启。

也就是说,只要你的 fork 同步正常、部署绑定正确,上游每次更新都会在当天自动完成"同步 → 触发构建 → 重新部署"的闭环。

排查速查表

症状原因解决方案
站点一直提示"有更新"Vercel 一键部署是新建项目而非 fork,无法感知上游删除原仓库,fork 后重新导入部署
Actions 页面没有 Upstream Sync 或任务不运行fork 后工作流默认未启用进入 Actions 页面手动 Enable Workflows,并手动跑一次
Upstream Sync 执行报错fork 与上游分叉、权限受限(预期行为)在 fork 首页手动执行一次 Sync fork
同步成功后站点没有变化部署平台未绑定 fork 仓库或未自动构建确认部署来源是 fork 的main分支,检查平台构建配置
不想等每天一次的定时同步—手动 Sync fork,或 star / watch 项目获取发布通知

小结

ChatGPT-Shortcut 的同步更新机制本质上是一条清晰的链路:Fork(建立 fork 关系)→ 启用 Upstream Sync 工作流(.github/workflows/rsync.yml,每天 UTC 零点定时同步)→ 触发部署平台重新构建。理解这条链路,你就同时掌握了"为什么一键部署一直提示更新"的根源、从新建项目迁移到 fork 部署的完整步骤,以及自动同步失败时的正确处置方式。更多部署细节可继续阅读 docs/deploy/standard.md、docs/deploy/configuration.md 与 docs/deploy/offline.md。

  • AI 应用
  • 提示工程
  • 人工智能
  • 前端

【免费下载链接】ChatGPT-Shortcut

Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库

项目地址:https://gitcode.com/gh_mirrors/ch/ChatGPT-Shortcut
点击查看免费下载

相关推荐

上一篇:告别命令行烦恼:N_m3u8DL-CLI-SimpleG让你的M3U8下载变得简单快捷
下一篇:终极指南:如何用N_m3u8DL-CLI-SimpleG轻松下载M3U8视频

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 23:46:08

wgpu速通指南:从Rust跑通8个数字翻倍,到100万只兔子上屏

wgpu速通指南&#xff1a;从Rust跑通8个数字翻倍&#xff0c;到100万只兔子上屏 【免费下载链接】wgpu A cross-platform, safe, pure-Rust graphics API. 项目地址: https://gitcode.com/GitHub_Trending/wg/wgpu 把8个浮点数丢给GPU翻倍&#xff0c;结果比单核CPU还慢…

作者头像 李华
网站建设 2026/9/27 23:45:06

小波神经网络数据预测实战:Python源码与数据集直接跑通

简介&#xff1a;这份资源面向数据预测方向的机器学习初学者与算法实践者&#xff0c;提供小波神经网络&#xff08;WNN&#xff09;的完整Python实现与配套数据集。小波神经网络融合小波变换的时频局部化特性与神经网络的非线性映射能力&#xff0c;能在不同尺度上捕捉数据局部…

作者头像 李华
网站建设 2026/9/27 23:44:18

198个C# WinForm实例源码改造指南:从能跑到能改的实战技巧

简介&#xff1a;这是一套面向C#桌面开发者的WinForm实例源码合集&#xff0c;适合初学者入门练手&#xff0c;也适合有经验的开发者查阅参考。内容覆盖窗体设计、控件布局、图像处理、报表打印、系统信息获取、文件读写、网络通信、数据库访问、加密解密以及硬件读写等十余个方…

作者头像 李华
网站建设 2026/9/27 23:39:46

基于深度学习的图像隐写分析实战:CNN模型+PyQt5工具+论文指南

简介&#xff1a;基于深度学习的图像隐写分析项目以 Python 完整实现隐写分析与隐写去除两大任务&#xff0c;并配套 GUI 演示界面和毕业论文&#xff0c;适合计算机、通信、人工智能、自动化等专业学生用于毕设、课程设计、大作业或进阶学习。项目采用 SRNet 网络完成隐写分析…

作者头像 李华
网站建设 2026/9/27 23:39:39

SpringBoot+Vue人事系统全解析:RBAC权限、JWT鉴权与毕业设计避坑指南

简介&#xff1a;面向Java毕业设计与课程设计学生&#xff0c;这份基于SpringBootVue开发的企业人力资源管理系统&#xff0c;覆盖员工档案、考勤、薪酬、权限等常见业务模块&#xff0c;前后端源码完整&#xff0c;可直接作为毕业设计、期末大作业或课程设计的基础项目。压缩包…

作者头像 李华