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

如何将多个Git仓库合并到主仓库并保留单个文件历史

合并多个独立Git仓库到主仓库并保留文件历史

需求

将多个独立Git仓库合并到名为mainrepo的主仓库,合并后结构如下:

  • mainrepo/repo1/:保留原repo1的src目录和pom.xml文件及对应结构
  • mainrepo/repo2/:保留原repo2的src目录和pom.xml文件及对应结构
  • mainrepo/repo3/:保留原repo3的src目录和pom.xml文件及对应结构

尝试过的无效方法

  • git subtree + git filter-repo组合:
    执行命令:
    git subtree add --prefix=repo1 https://bitbucket.org/repos/repo1.git master
    git filter-repo --force --path src/ --path pom.xml --path-rename :repo1/
    
    问题:仅第一个仓库的操作有效,添加第二个仓库后,第一个仓库的历史记录会丢失。
  • 尝试过Stack Overflow上的另外两种合并方案,均无法保留单个文件的完整历史。

可行解决方案

步骤1:初始化主仓库

mkdir mainrepo
cd mainrepo
git init
cd ..

步骤2:对每个子仓库执行以下操作(以repo1为例)

git clone https://bitbucket.org/repos/repo1.git
cd repo1
git filter-repo --force --path src/ --path pom.xml --to-subdirectory-filter repo1
cd ../mainrepo
git pull --allow-unrelated-histories ../repo1/
cd ..

提示:将上述命令中的repo1替换为repo2、repo3,重复执行即可完成所有仓库的合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:25:13