将两个git存储库合并为一个,保留(重命名)主分支

时间:2014-06-18 16:47:13

标签: git version-control merge branch

序言

我有两个独立的项目,它们合二为一。他们都有自己的git存储库。

/project/
/project/app/
/project/app/.git/
/project/helper/
/project/helper/.git/

两个git存储库都有一些独特的分支,当然它们都有自己的master分支。

问题

我想将两个项目合并为一个项目:

/project/.git/

唯一分支不相关,可以删除它们。但我希望重新命名和保留主分支,例如masterAppmasterHelper,因此我为整个项目创建了一个新的单一存储库,其中包含两个分支和一个新的master分支。

这可能吗? 如果是这样,它将涉及一些重命名技巧,因为每个存储库突然包含它们自己的父目录。

详细

这些存储库目前是本地的,因此我们不必担心远程起源或打破其他用户的提交历史记录。我确实希望保留各个(重命名的)master分支的提交历史记录,以及(如果可能的话)在这些分支中暂存/跟踪的文件。


我发现了以下类似的问题:How do you merge two git repositories?

这个问题是关于将一​​个存储库合并到另一个存储库中。这使得这个问题略有不同,但我认为解决方案可能会很接近。但是,我对git没有足够的经验来弄清楚该解决方案将如何应用于我的场景。

1 个答案:

答案 0 :(得分:2)

一种方法是创建一个单独的git存储库

mkdir combinedProject
cd combinedProject
git init

然后将这两个项目作为遥控器添加到combinedProject

git remote add -f App /path/to/App
git remote add -f Helper /path/to/Helper

然后创建单独的masterAppmasterHelper分支

git branch masterApp --track App/master
git branch masterHelper --track Helper/master

然后从masterApp创建一个主分支,并将masterHelper合并到其中。

git checkout masterApp
git checkout -b master
git merge masterHelper

如果不创建新的回购,您可以在App回购

中执行相同的操作
git checkout -b masterApp

然后添加Helper的遥控器并创建masterHelper分支

git remote add -f Helper /path/to/Helper
git branch masterHelper --track Helper/master

然后将masterHelper合并到master

git checkout master
git merge masterHelper