You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何merge/rebase存放在文件夹内的独立Git仓库分支

问题根因

你当前的操作属于在自有Git仓库的工作目录中嵌套克隆了另一个完全独立的Git仓库:外层仓库不会读取内层仓库的Git提交记录,只会将内层仓库的整个文件夹识别为带.git标记的特殊目录/未追踪内容,两个仓库的提交树没有任何共同祖先,因此会出现「必须进入内层文件夹才能看到独立提交历史」「GitHub提示分支提交历史完全不同无法创建PR」的问题。

解决方案

根据你是否需要保留被克隆仓库的原始提交历史,选对应方案操作即可:

方案1:保留被克隆仓库的完整提交历史,合并到自有分支

  • 切到自有仓库的branch A分支,进入之前克隆得到的内层仓库文件夹,把里面的.git隐藏目录临时移动到其他位置备份(不要直接删除,避免历史丢失)
  • 回到自有仓库根目录,执行git add .将内层仓库的所有文件加入暂存区,提交一次临时版本:git commit -m "temp: import external repo files"
  • 给自有仓库添加被克隆仓库的远程源:git remote add imported-repo <你之前克隆内层仓库使用的Git地址>
  • 拉取被克隆仓库的所有提交数据到本地:git fetch imported-repo
  • 执行合并命令,允许合并无共同祖先的独立提交树:git merge imported-repo/<需要合并的内层仓库分支名> --allow-unrelated-histories
  • 按提示解决合并过程中出现的文件冲突,完成后提交合并结果
  • 合并完成后,你在自有仓库根目录就能查到被克隆仓库的所有原始提交记录,两个仓库的历史会串到同一条提交线上,将branch A推送到GitHub后即可正常创建指向main分支的PR。

方案2:不需要保留被克隆仓库的提交历史,仅合并当前文件内容

这个方案操作更简单:

  • 进入之前克隆得到的内层仓库文件夹,直接删除里面的.git隐藏目录
  • 回到自有仓库根目录,如果之前误将内层文件夹提交为Git子模块,先执行git rm --cached <内层文件夹名称>清除子模块缓存标记
  • 执行git add .将内层仓库的所有文件加入暂存区,正常提交即可
  • 将branch A推送到GitHub后,所有文件会作为当前分支的普通提交存在,可直接和main分支对比创建PR,不会再触发历史不相关的报错。

内容的提问来源于stack exchange,提问作者Danyil Derkach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:57:31