git - 将一个 Git 存储库拆分为多个 - 分支成为分支

标签 git git-branch fork

我在 SVN 中有一个项目正在迁移到 Git。该项目由一个“核心”产品(在主干下)组成,然后在同一个存储库中分支,并用作起点为我们推出产品的每个客户进行定制。

在我看来,这些并不是真正的分支,因为它们永远不会被 merge 回主干,而且它们最好生活在自己的存储库中,并将它们的历史链接回“主干”存储库和能够在需要时从主干中提取更改(当然可以使用 git 轻松完成)。

让事情稍微复杂一点的是,一个客户拥有他们自己项目的一个分支,这是一个“真正的”分支,因为它将在某个时间点 merge 回该客户的主分支。

为了让事情更清楚,SVN 结构如下:

  • “项目”存储库
    • 中继
    • 分支机构
      • Client1(从 Trunk v100 分支)
      • Client2(从 Trunk v150 分支)
      • Client2-Branch(从 Client2 v200 分支)
      • Client3(从 Trunk v150 分支)

我想得到的结构是

  • “项目”存储库

  • Client1 存储库(从 SHA123 fork )

  • Client2 存储库(从 SHA456 fork )

    • Client2-Branch(从 SHA456789 分支)
  • Client3 存储库(从 SHA789 fork )

谁能推荐一个好方法来做到这一点 - 我不是 Git 新手,我知道 filter-branch,我只是不确定我应该采取什么方法来获得这个结构并保留尽可能多的历史记录尽可能。

谢谢

最佳答案

如果您真的想这样做,请克隆存储库,并删除每个分支中的无关分支。

不过现在的情况好像还好。您确定永远不想从一个存储库中挑选补丁到另一个存储库吗?

关于git - 将一个 Git 存储库拆分为多个 - 分支成为分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996029/

相关文章:

eclipse - 如何解决 EGit 中的冲突

git - 为什么 `git diff` 不调用外部差异工具?

node.js - 将 GitHub 项目的分支发布到新的 NPM 模块,但保留与原始模块 merge 的选项?

git - 借助 Mercurial 书签再现 git 分支模型

c - C程序调用execl()后如何控制父进程的执行?

c - 如何创建多个进程

git - 不要忽略 git sourcetree 中的文件

git-grep 不使用多线程

git log 显示两个分支之间的不同提交,包括共同祖先

git - 在 git 中的远程存储库上创建私有(private)分支