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

3

前言

我有两个独立的项目,它们合并成一个。它们各自拥有自己的git代码库。

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

这两个git仓库都有一些独特的分支,当然也都有自己的master分支。

问题

我想将这两个项目合并成一个:

/project/.git/

唯一的分支不相关,可以删除。但是我想要将主分支重命名并保留,例如masterAppmasterHelper,这样我就有了一个新的单一存储库,其中包含两个分支和一个新的master分支。
这可能需要一些重命名技巧,因为每个存储库突然包括它们自己的父目录。
细节
这些存储库目前是本地的,所以我们不必担心远程起源或破坏其他用户的提交历史记录。我确实希望保留各自(重命名的)master分支的提交历史记录,并且(如果可能)保留那些分支中已暂存/跟踪的文件。
我找到了以下相似的问题:如何合并两个Git仓库? 那个问题是关于将一个仓库合并到另一个仓库中。这使得这个问题稍微有些不同,但我认为解决方案可能是接近的。然而,我对git不够熟练,无法弄清楚那个解决方案如何适用于我的情况。
1个回答

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

谢谢,我回去后会尝试这个。远程应用程序是否仍然是依赖项?或者在合并后可以将它们(包括目录)删除吗? - Redsandro
在添加了远程并创建了“masterApp”和“masterHelper”分支之后,不再需要远程应用程序。 - dloman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接