Git 添加要素分支以拆分主节点

Git 添加要素分支以拆分主节点,git,branch,Git,Branch,我最近开始着手一个废弃的项目,这个项目是在我对git了解不多的时候开始的,结果是主分支中有很多提交,而主分支应该是在发布/功能分支上创建的。 所以我考虑重组回购协议 我尝试过,但这给我留下了一个问题,我仍然需要以某种方式获得最终的承诺,以与主合并,这是我不知道如何做 有没有办法将回购协议重组为多个开发分支,并且在不丢失提交的情况下在主版本中保留发行版本?如果我理解正确,您希望重新编写主分支的历史记录 根据经验,重写已推送到远程的任何分支(尤其是主分支)的历史记录通常不是一个好主意。这可能导致其他

我最近开始着手一个废弃的项目,这个项目是在我对git了解不多的时候开始的,结果是主分支中有很多提交,而主分支应该是在发布/功能分支上创建的。 所以我考虑重组回购协议

我尝试过,但这给我留下了一个问题,我仍然需要以某种方式获得最终的承诺,以与主合并,这是我不知道如何做


有没有办法将回购协议重组为多个开发分支,并且在不丢失提交的情况下在主版本中保留发行版本?

如果我理解正确,您希望重新编写主分支的历史记录

根据经验,重写已推送到远程的任何分支(尤其是主分支)的历史记录通常不是一个好主意。这可能导致其他人的供款流失,并破坏他们的本地回购协议。更多关于这个

如果有多人参与了你的回购协议(或者如果你有很多承诺),我建议接受过去,现在就开始用发行/功能分支构建你的回购协议,到此为止

如果您真的想从一开始就拥有一个干净的提交历史记录,那么您需要重写整个历史记录而不丢失任何步骤,下面是我要做的事情:

  • 将您的回购协议复制到文件系统的其他位置进行备份

  • 使用Git日志,我将找到适合在同一特性分支中的每个提交组。我要注意最后的提交散列和相关的功能标题

  • 对于这些组中的每一个,我将创建一个功能分支

  • 从主控台开始
    git签出主控台
  • 创建并切换到新功能分支
    get checkout-b
  • 删除自上次git重置--hard之后的所有提交
  • 现在您已经有了一堆不错的特性分支,您需要将它们合并到master中。但首先,您需要删除master上提交的所有历史记录。您可以通过将分支重置为git日志中的第一个提交分支来实现这一点:
    git reset--hard$(git rev list--max parents=0 HEAD)

  • 最后,按照首先添加提交的顺序,您可以对在步骤2中创建的每个分支执行
    git merge
    。如果你没有忘记任何承诺并尊重它们出现的顺序,你就不应该有任何冲突