AI 从 0 开发了一个开源项目:GitHub 代码自动备份到 Gitee

AI 从 0 开发了一个开源项目:GitHub 代码自动备份到 Gitee
为什么要备份
代码放 GitHub 上,最怕的就是账号出问题或者仓库意外丢失。虽然 GitHub 挺稳的,但多个备份总归安心。
另外我有些项目想让国内的朋友方便看到,GitHub 基本网络不能用,Gitee 就顺畅多了。
之前试过 Gitee 官方的镜像功能,但每个仓库要单独去配置,十几个仓库一个个点下来实在太累了。而且后续有新仓库还得再配一遍。
我想要的效果是:配一次,后面不用管。
踩了哪些坑
试了挺多方案,最后用 GitHub Actions 配合 hub-mirror-action 搞定了。但中间踩了几个坑,写出来大家避开。
坑一:私有仓库同步失败
第一次跑直接报错:
fatal: could not read Username for 'https://github.com': No such device or address
默认用 HTTPS 克隆,私有仓库没权限。换成 SSH 方式克隆,把 SSH 公钥同时加到 GitHub 和 Gitee 就好了。
坑二:变量名不能用 GITHUB_ 开头
在 GitHub 配置 Variables 时,提示 Variable name cannot start with "GITHUB_" prefix。原来 GITHUB_ 是 GitHub 的保留前缀,改成 GH_USERNAME 就通过了。
坑三:SSH 密钥设了密码
平时习惯给 SSH 密钥加个密码,结果 Actions 跑的时候卡住了。自动化场景用的 SSH 密钥一定不要设 passphrase,直接回车跳过。
用 opencode 开发这个项目
这个项目是用 opencode 在终端里开发的,全程没离开过命令行。
一开始我就问它"Gitee 怎么实时同步 GitHub 上的所有项目",它给了几个方案,我选了 GitHub Actions 那条路,然后它就开始帮我搭了。
过程中来回改了好几次:
- 项目名一开始随便起的,后面觉得含义不清楚,让它重新想了一个
- 目录位置一开始不对,我想把这类 Action 项目统一放一个目录下,让它挪了位置
- 配置变量时 GitHub 报
GITHUB_不让用,直接告诉它,它把所有文件一次全改了 - workflow 先从测试单仓库开始,确认链路通了再改成全量,后来又调成指定列表,都是聊天完成
最有意思的是私有仓库报错那次,我把 Actions 日志贴给它,它看了之后说是 HTTPS 克隆没权限,改成 SSH 方式就行了,还把 README 里对应的说明一起更新了。
整个过程就是对着终端聊天,不用自己翻文档,也不用挨个文件改。
最后做出来的东西
折腾完整理成一个开源项目,结构很简单:
gh-gitee-sync/
├── .github/workflows/sync-to-gitee.yml
├── README.md
└── .gitignore
配置一次 Secrets 和 Variables,每天凌晨自动同步,也可以随时手动触发。新加仓库改一下列表就行。
项目地址:https://github.com/Idea-flow/gh-gitee-sync
有同样需求的朋友可以直接拿去用,有问题欢迎提 Issue。
一点感受
这个项目其实不大,但如果没 AI,我大概不会花时间去做。以前想到"搞个脚本同步一下",转头又觉得要查文档、配环境、调 bug,嫌麻烦就搁置了。
但 opencode 直接把门槛拉平了。有想法直接问它,它能给出方案、帮你比较、领着你落地。遇到报错也不用自己去搜,贴过去它就能修。
所以现在一些小想法我不会轻易放掉了。遇到"如果有个工具能 XXX 就好了"的念头,直接丢给 AI 问问看,十有八九能给个可行的路子,就算最后没做成,思路也比之前开阔了。
关注一下哦~,会持续分享 AI 工具和效率提升的实操经验。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)