💡 项目初衷:在国内开发,GitHub 访问不稳定是常态。为了代码备份和下载加速,同步到 Gitee 是刚需。但我不想每天手动
git push,于是有了这个项目。🔗 GitHub :github.com/Ei-Ayw/Sync…
⭐ 如果觉得有用,求个 Star 支持一下,这也是我持续开源的动力!
我花了一下午时间,从零打造了一个全自动、可自部署的 GitHub → Gitee 镜像同步平台 —— SyncPulse 采用 Python (FastAPI) + React 开发,专门解决跨平台代码同步问题。
核心亮点:
- ✅ 全量同步:30+ 仓库?一键批量搬家,无需一个一个配置。
- ✅ 智能创建:Gitee 侧没有对应仓库?程序自动调用 API 帮你建好。
- ✅ Webhook 实时触发:GitHub 一有
push,Gitee 毫秒级跟进。 - ✅ 定时任务:配置一下,每天凌晨自动帮你的所有项目“做备份”。
- ✅ 智能容错:自动识别并绕过 Gitee 的限制(如 Hidden Ref 问题)。
🛠️ 技术栈揭秘
| 模块 | 技术选型 |
|---|---|
| 后端 | FastAPI (异步高性能) + SQLModel |
| 任务队列 | Celery + Redis (处理耗时 Git 操作) |
| 前端 | React 18 + Vite + Tailwind CSS |
| 动画 | Framer Motion (极致交互体验) |
| 定时调度 | Celery Beat |
🏁 5 分钟上手
环境需求
- Python 3.9+ / Node.js 18+
- Redis / MySQL
启动步骤
-
克隆项目:
git clone https://github.com/Ei-Ayw/SyncPulse.git -
后端配置:修改
.env中的 GitHub/Gitee OAuth 凭据。 -
一键运行:
# 启动后端 API uvicorn app.main:app --port 8001 # 启动 Worker(注意 Windows 环境需加 --pool=solo) celery -A app.worker.celery_app worker --loglevel=info --pool=solo # 启动前端 cd frontend && npm run dev
🚧 踩坑笔记
在开发这个项目时,我踩了几个 Celery 的深坑,希望能帮到大家:
- Windows 环境下的 Celery 陷阱:Celery 默认的
prefork在 Win 上极其不稳定,经常任务卡死。记得强制指定--pool=solo。 - Git 认证冲突:多用户同步时,本地 Git 配置会冲突。我在代码中通过在
clone/pushURL 中动态嵌入Personal Access Token的方式,实现了无状态、环境无关的同步。 - Framer Motion 的 Key 值:在 React 中做列表动画时,
AnimatePresence切换加载状态,一定要给组件设置唯一的key,否则你会发现组件“神秘失踪”(透明度卡在 0)。
🗺️ 未来计划
会不定期维护和更新的,计划推出 ai review 管理
- 支持 GitLab、Coding.net 等更多平台
- 接入飞书/钉钉 Webhook 告警(同步失败提醒)
- Docker 一键部署镜像
这个项目目前已经稳定运行在我的私人服务器上,帮我维护着 20 多个开源项目的国内镜像。如果你也深受同步之苦,欢迎试用!
最后,如果 SyncPulse 帮到了你,请给个 GitHub Star! 有任何建议或 Bug,欢迎在评论区或 Issue 中留言,我会第一时间回复。
GitHub: github.com/Ei-Ayw/Sync…