告别手动搬运!我开源了一款 GitHub → Gitee 全自动同步工具

1 阅读2分钟

💡 项目初衷:在国内开发,GitHub 访问不稳定是常态。为了代码备份和下载加速,同步到 Gitee 是刚需。但我不想每天手动 git push,于是有了这个项目。

🔗 GitHubgithub.com/Ei-Ayw/Sync…

如果觉得有用,求个 Star 支持一下,这也是我持续开源的动力!

readme.gif

我花了一下午时间,从零打造了一个全自动、可自部署的 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

启动步骤

  1. 克隆项目git clone https://github.com/Ei-Ayw/SyncPulse.git

  2. 后端配置:修改 .env 中的 GitHub/Gitee OAuth 凭据。

  3. 一键运行

    # 启动后端 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 的深坑,希望能帮到大家:

  1. Windows 环境下的 Celery 陷阱:Celery 默认的 prefork 在 Win 上极其不稳定,经常任务卡死。记得强制指定 --pool=solo
  2. Git 认证冲突:多用户同步时,本地 Git 配置会冲突。我在代码中通过在 clone/push URL 中动态嵌入 Personal Access Token 的方式,实现了无状态、环境无关的同步。
  3. 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…