无法fork时如何管理同一份代码的两个git repository并合并跨仓库变更
双Git仓库变更合并解决方案
可行性说明
该需求完全可以实现,无需依赖代码托管平台的fork功能,仅通过Git原生的多远程仓库管理能力即可完成操作。
具体操作步骤
- 首先在本地克隆主仓库,进入仓库目录:
git clone <主仓库HTTPS/SSH地址> cd <仓库目录名>
- 添加次级仓库为本地仓库的第二个远程源,此处命名为
secondary:
git remote add secondary <次级仓库HTTPS/SSH地址>
执行git remote -v可验证远程源配置,正常会输出origin(对应主仓库)和secondary(对应次级仓库)两组地址。
3. 拉取次级仓库的所有提交记录:
git fetch secondary
- 切换到主仓库需要接收变更的分支(以常用的
main分支为例),合并次级仓库对应分支的变更:
git checkout main git merge secondary/main
若合并过程中出现代码冲突,手动解决所有冲突文件后,执行
git add <冲突文件名>,再执行git commit完成合并提交即可。
若两个仓库初始提交历史完全独立,首次合并时会提示refusing to merge unrelated histories错误,此时在merge命令后追加--allow-unrelated-histories参数即可:git merge secondary/main --allow-unrelated-histories
- 将合并完成后的分支推送到主仓库,完成同步:
git push origin main
日常同步注意事项
- 每次同步前建议先拉取主仓库最新提交,避免本地分支落后于主仓库远程分支产生额外冲突:
git pull origin main - 仅需要同步指定分支时,将上述命令中的分支名替换为目标分支名即可,无需同步全部分支。
- 不需要保留次级仓库远程源时,可执行
git remote remove secondary删除配置。
内容的提问来源于stack exchange,提问作者J Robz
相关产品推荐
相关产品推荐

