【问题标题】:Merge two git repositories into one, keeping (renamed) master branches将两个 git 存储库合并为一个,保留(重命名)主分支
【发布时间】:2014-08-09 01:44:11
【问题描述】:

序言

我有两个独立的项目合并为一个。他们都有自己的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 的经验不够,无法弄清楚该解决方案将如何应用于我的场景。

【问题讨论】:

    标签: git version-control merge branch


    【解决方案1】:

    一种方法是创建一个单独的 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
    

    【讨论】:

    • 谢谢,等我回来再试试。远程应用程序是否仍然是依赖项?或者我可以在合并后删除它们(包括目录)吗?
    • 添加遥控器并创建masterApp masterHelper 分支后不需要远程应用程序
    猜你喜欢
    • 2014-12-17
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多