【问题标题】:How to split up (messy main, large repo) git branch into multiple branches?如何将(凌乱的主要,大型回购)git分支拆分为多个分支?
【发布时间】:2021-11-30 13:21:56
【问题描述】:

在我的整个开发过程中,我将所有内容都提交给了主分支。结果是我有一个非常混乱的主分支。我想将我的 main 拆分为 branch1branch2 分支。例如,我有这样的事情:

Main --- A --- C --- B --- E --- D

我想把它变成:

   Branch1  B --- E
          /
Main --- A
          \
   Branch2  C --- D 

根据我的理解(可能是错误的),如果没有冲突,这应该是可能的。有没有办法做到这一点?如果有冲突,我将如何处理?

需要注意的是,我的 repo 相当大(.git 文件夹约为 35 GB)。我正在将大文件移动到 Git LFS,但相信必须在每个单独的提交中实现这一点(whigh 可能需要很长时间)。我认为我现在使用的所有命令都因此而在服务器上变慢,导致等待时间非常长。

【问题讨论】:

  • 请注意,如果您在分支之间拆分大文件大小,那么与您当前的状态相比,切换分支可能是一个较慢(错误)的操作。
  • @TTT 感谢您的提醒 - 会注意的

标签: git split branch


【解决方案1】:

你可以在这里使用git rebase --onto_twice`:

# from Main
git rebase --onto A C
git rebase --onto C E

第一个命令说要移动到提交A 的父级为C 的提交之上,即B 提交。第一个变基使图表看起来像这样:

Branch1:  B -- E -- D
         /
Main:   A
         \
Branch2:  C

第二个变基将D 提交移到C 之上,这应该会给我们留下您预期的结果。

【讨论】:

  • 您好,感谢您的快速回复。我用有关.git 文件夹大小的更多相关信息更新了我的问题。这会改变你的答案吗?
  • @Wilan 您的 Git 存储库中的大文件是另一个问题,可能与此无关或受此影响。在我的回答中,Git 的大部分“工作”只是围绕分支指针移动。内容保持不变。
  • 感谢您的澄清。将尝试您的解决方案,看看它是否有效。
猜你喜欢
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 2011-06-02
  • 2022-11-25
  • 1970-01-01
  • 2021-06-14
  • 2012-11-06
  • 2021-07-04
相关资源
最近更新 更多