能否在GitHub账户中两次Fork他人仓库?需修改引擎并保留上游同步
实现方案:维护同一引擎仓库的两个独立Fork并同步更新
没问题,我帮你梳理一下怎么实现这个需求——在自己GitHub账户里维护同一个引擎仓库的两个独立fork,分别做不同修改,还能同步原仓库更新、贡献代码:
1. 创建第一个Fork(对应第一套修改集/项目)
- 直接在GitHub上打开原引擎仓库页面,点击右上角的「Fork」按钮,把仓库复制到你的账户下,比如命名为
engine-project-a - 克隆到本地开发:
git clone git@github.com:你的用户名/engine-project-a.git - 添加原仓库为「上游远程仓库」,方便后续拉取官方更新:
git remote add upstream git@github.com:原作者用户名/原仓库名.git - 之后你就可以随时拉取原仓库的最新代码:
合并后推送到自己的fork即可。git pull upstream main # 假设原仓库主分支是main,根据实际情况调整
2. 创建第二个Fork(对应第二套修改集/项目)
GitHub不允许直接在同一个账户下fork同一个仓库两次,所以得手动创建第二个独立仓库并关联上游:
- 步骤1:在GitHub上新建一个空仓库,命名为
engine-project-b(别勾选「Initialize this repository with a README」) - 步骤2:临时克隆原仓库到本地,把代码推送到你的新仓库:
# 临时克隆原仓库 git clone git@github.com:原作者用户名/原仓库名.git temp-engine cd temp-engine # 添加你的新仓库为远程 git remote add my-second-fork git@github.com:你的用户名/engine-project-b.git # 推送所有分支到新仓库 git push my-second-fork --all # 删除临时目录 cd .. && rm -rf temp-engine - 步骤3:克隆你的第二个仓库到本地开发,并添加上游远程:
git clone git@github.com:你的用户名/engine-project-b.git cd engine-project-b git remote add upstream git@github.com:原作者用户名/原仓库名.git
这样你就有了两个独立的fork仓库,各自可以做不同的修改。
3. 保持两个仓库与原引擎的同步
对每个仓库,定期执行以下操作即可同步原仓库的更新:
# 拉取上游仓库的所有更新 git fetch upstream # 切换到你的主开发分支 git checkout main # 合并上游更新(也可以用rebase,根据你的习惯选择) git merge upstream/main # 推送到自己的fork仓库 git push origin main
两个仓库的同步操作是独立的,互不影响。
4. 向原引擎仓库贡献代码
不管是从哪个fork提交贡献,流程都是一致的:
- 在对应的fork仓库里创建一个新分支(比如
feature/add-new-function或fix/resolve-crash) - 在这个分支上完成修改、提交,然后推送到你的fork:
git checkout -b feature/add-new-function # 做修改、提交 git push origin feature/add-new-function - 回到原引擎仓库的GitHub页面,点击「New pull request」,选择你的fork的这个分支作为源分支,提交PR即可
- 原作者合并PR后,你可以再执行同步操作,把合并后的更新拉取到你的两个fork仓库里,保持代码一致
小提醒
- 两个仓库的修改集是完全独立的,不要在它们之间直接推送代码,避免混乱
- 如果两个修改集有重复的提交,可以用
git cherry-pick把某个提交从一个仓库复制到另一个,但要注意处理可能的冲突 - 给两个仓库设置清晰的名称和描述,方便自己区分管理
内容的提问来源于stack exchange,提问作者Spooikypok_Dev
相关产品推荐
相关产品推荐

