Gitea镜像仓库同步GitHub时如何保护Action生成分支?
解决Gitea镜像同步与GitHub Action分支冲突的方案
保护GitHub Action生成分支不被Gitea覆盖删除的方法
- 缩小Gitea镜像同步的分支范围:在Gitea的镜像仓库设置里,只指定同步你的源码分支(比如
main或master),不要包含GitHub Action生成的分支(比如gh-pages)。这样覆盖式同步只会操作你指定的源码分支,不会触及生成分支。 - 给生成分支设置精准的权限规则:在GitHub仓库的分支保护设置中,不要用全局只读策略,而是设置仅允许GitHub Action的执行账号推送该分支——把GitHub Action默认的
GITHUB_TOKEN或者专门创建的部署密钥加入允许推送的列表,同时禁止Gitea同步使用的账号对该分支有推送/删除权限。这样Gitea的同步操作就无法修改或删除这个分支。
替代的GitHub Action实现方式
- 用Gitea Webhook触发GitHub Action:不在GitHub上监听分支推送事件,而是在Gitea仓库配置Webhook,当Gitea的源码分支更新时,直接调用GitHub的Action触发接口。这样Action的执行和Gitea的同步是独立触发流程,避免同步覆盖分支的问题。
- 将生成结果推送到独立GitHub仓库:把GitHub Action生成的静态页面推送到一个单独的GitHub仓库,而非当前同步仓库的分支。这样Gitea的同步操作完全不会影响静态页面的存储,同时依然可以用GitHub Pages部署这个独立仓库。
其他等效方案
- 直接用Gitea Actions+Pages完成流程:放弃同步到GitHub,直接在Gitea上配置Actions生成静态页面,然后用Gitea Pages实现预览部署,绕开整个跨平台同步的冲突问题。
- 用自定义同步脚本替代Gitea镜像同步:不用Gitea原生的覆盖式镜像同步,自己写
git-sync脚本或者用第三方工具,只同步Gitea的源码分支到GitHub,主动跳过GitHub上的生成分支,避免覆盖。
内容的提问来源于stack exchange,提问作者7Wate
相关产品推荐
相关产品推荐

