我有两个独立的项目,它们合二为一。他们都有自己的git
存储库。
/project/
/project/app/
/project/app/.git/
/project/helper/
/project/helper/.git/
两个git
存储库都有一些独特的分支,当然它们都有自己的master
分支。
我想将两个项目合并为一个项目:
/project/.git/
唯一分支不相关,可以删除它们。但我希望重新命名和保留主分支,例如masterApp
和masterHelper
,因此我为整个项目创建了一个新的单一存储库,其中包含两个分支和一个新的master
分支。
这可能吗? 如果是这样,它将涉及一些重命名技巧,因为每个存储库突然包含它们自己的父目录。
这些存储库目前是本地的,因此我们不必担心远程起源或打破其他用户的提交历史记录。我确实希望保留各个(重命名的)master
分支的提交历史记录,以及(如果可能的话)在这些分支中暂存/跟踪的文件。
我发现了以下类似的问题:How do you merge two git repositories?
这个问题是关于将一个存储库合并到另一个存储库中。这使得这个问题略有不同,但我认为解决方案可能会很接近。但是,我对git
没有足够的经验来弄清楚该解决方案将如何应用于我的场景。
答案 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
然后创建单独的masterApp
和masterHelper
分支
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