开源框架双远程同步工作流

摘要

基于 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代码同步完成!"

高级维护策略

  • 保持主分支纯净:主分支仅用于同步上游代码。
  • 功能开发分支:在新分支上进行功能开发。
  • 定期清理已合并的旧分支。

关联概念

来源回溯