开源框架双远程同步工作流
摘要
基于 GitHub 开源游戏框架开发、托管于 CNB(cnb.cool)的三方协作模型:Upstream(GitHub 上游,只读)提供框架更新,Origin(CNB,读写)作为修改与团队协作中心,Local 本地开发;通过 fetch/merge/push 保持三方同步。既享受开源社区更新,又利用 CNB 国内访问快、稳定性高的优势。
三方协作模型
- Upstream(上游):原始 GitHub 仓库,只读,用于获取最新框架更新。
- Origin(原点):你的 CNB 仓库,读写,保存你的修改,作为团队协作中心。
- Local(本地):你的开发环境。
初始化流程
# 1. 克隆 GitHub 原始项目
git clone https://github.com/原作者/游戏框架.git my-game-project
cd my-game-project
# 2. 重命名默认 origin 为 upstream(指向 GitHub)
git remote rename origin upstream
# 3. 添加 CNB 仓库为新的 origin
git remote add origin https://cnb.cool/你的用户名/你的仓库名.git
# 4. 验证远程源配置
git remote -v
# 5. 首次推送到 CNB
git push -u origin main日常开发工作流
git checkout -b feature/new-level
... 编写代码 ...
git commit -m "feat: 添加新关卡逻辑"
git push origin feature/new-level- 合并建议在 CNB 网页端发起 Merge Request (MR) 进行代码审查。
同步上游更新(核心)
# 1. 获取上游最新代码
git fetch upstream
# 2. 合并到本地主分支(--rebase 保持提交历史整洁,或使用 merge)
git checkout main
git merge upstream/main
# 3. 解决冲突(如果有)后提交
git add .
git commit -m "merge: 同步上游框架更新并解决冲突"
# 4. 推送到 CNB
git push origin main常见问题与注意事项
- Git LFS 大文件:检查 .gitattributes 是否启用;
git lfs install;同步丢失时git lfs fetch upstream --all然后git lfs push origin --all。 - 免密:推荐 GitHub 与 CNB 均配置 SSH Key(
ssh-keygen -t ed25519),远程地址改为 SSH 格式。 - 上游破坏兼容性:永远不要在 main 直接开发复杂功能(建 dev/feature 分支);合并前打标签备份(
git tag v1.0-my-stable),出问题用git reset --hard回退。 - 同步时机:每周一次(活跃项目)、提交 PR 前、重大更新后。
- CNB 特殊性:兼容标准 Git 协议,标准命令完全适用。
同步脚本模板
#!/bin/bash
# sync_fork.sh - GitHub代码同步脚本
echo "开始同步Fork项目..."
git fetch upstream
git merge upstream/main
git push origin main
echo "GitHub代码同步完成!"高级维护策略
- 保持主分支纯净:主分支仅用于同步上游代码。
- 功能开发分支:在新分支上进行功能开发。
- 定期清理已合并的旧分支。