2014-01-24 226 views
2

好吧,我们有一个包含3个子模块的存储库。现在我们要将这些子模块合并回主存储库,保留所有的历史记录(当然,使用子模块比使用有效性更令人头疼)。我们如何继续?将git子模块合并到主存储库中

+0

可能重复[un-submodule git submodule](https://stackoverflow.com/questions/1759587/un-submodule-a-git-submodule) – Qw3ry

回答

4

比方说,你有以下的文件系统(并假设你只有一个子模块,简单的答案)

myRepoRoot/ 
    myMainFiles/ 
    submodule/ 

您需要做的仅仅

#Preparing the filesystems 
cd submomdule 
mkdir submodule 
git mv file1 file2 dir1 dir2 submodule 
git commit -am "Moved file" 

#Actually merging 
cd myRepoRoot 
git remote add sub url_to_submodule 
git fetch sub 
git merge sub/master 

上词解释:你有几棵没有共同提交的树,你只需要合并这些树。第二部分就是这样做的。

第一部分只是确保子模块的文件系统将是您所期望的。

+0

我修改了一下你的解决方案 - 我已经检查所有存储库以分离目录,从主存储库中移除子模块,将子模块存储库中的文件(同级目录移动到主存储库目录),提交的更改,在主存储库中添加“远程”存储库,如“../submoduleA”等路径然后从这些目录中获取更改并合并它们 - 无需推送到远程存储库。 – Wojtek

相关问题