【问题标题】:Move branch to a different repository while preserving its commits but aggregating remaining history将分支移动到不同的存储库,同时保留其提交但聚合剩余的历史记录
【发布时间】:2015-03-12 19:11:03
【问题描述】:

我有两个存储库 A 和 B,它们包含不同的项目。在某个时候,我在 repo B 中创建了一个分支“开发”并在那里做一些工作。

Repo A master  a-a-a-a

Repo B master  b-b-b-b
                      \
       develop         d-d-d-d-d

我现在要做的是将分支开发从 repo B 移动到 A,而它的所有提交都应该被保留,但 repo B 的其余历史应该被合并。所以最后应该是这样的

Repo A master  a-a-a-a
                      \
       develop         d-d-d-d-d

Repo B master  b-b-b-b
                     \
       develop         d-d-d-d-d

如果我比较两个开发分支,它们应该是相似的。 我已经实现了将分支移动

- [Repo B] git remote add /url/to/RepoA
- [Repo B] git push RepoA develop

然而,这也包括回购 B (b-b-b-b) 的整个历史,我不想要(或实际上合并到一个提交中)。

关于如何做到这一点的任何建议?

谢谢

【问题讨论】:

    标签: git copy repository branch git-remote


    【解决方案1】:

    在你这样做之后:

    [Repo B] git push RepoA develop
    

    我想你会得到类似的东西:

    Repo A master  a-a-a-a
    
    repoB/master     b-b-b-b
                            \
             develop         d-d-d-d-d
    

    即两个分支 repoA/masterrepoB/master 在您的仓库中但未连接。

    为什么不执行rebase
    使用-i 选项,以便您可以决定将b-b-b-b 提交压缩为一个提交(我认为这就是您想要的) 该命令将是

    git rebase -i master develop
    

    然后,您将选择第一个提交 b 并压缩以下提交。
    结果应该是:

    Repo A master  a-a-a-a
                          \
            develop        b'-d'-d'-d'-d'-d'
    

    b' 是从 4 次提交 b 压缩而来的提交 和d' 是提交d 产生的提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-13
      • 2018-06-01
      • 2012-03-28
      • 2015-04-17
      • 1970-01-01
      • 2010-11-02
      • 2014-12-17
      • 2013-06-26
      相关资源
      最近更新 更多