添加功能分支以分解 master

Add feature branches to break up master

我最近开始做一个被遗弃的项目,这个项目是我在对git不太了解的时候开始的,结果是在master分支中进行了很多提交,这些提交应该是在[=]上创建的17=] 分支机构。 所以我考虑重组 Repo。

我尝试了 moving commits to other branches 但这给我留下了一个问题,我仍然需要以某种方式获得最终提交以与 master 合并,我不知道该怎么做。

有没有办法将 Repo 重组为多个开发分支,并且仍然在 master 中保留发布而不丢失提交?

如果我没理解错的话,你要re-writemaster分支的历史。

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

如果多人为您的回购做出贡献(或者如果您有很多提交),我建议您接受过去并开始使用 release/feature 分支构建您的回购,现在就到此为止。

如果你真的想从一开始就有一个干净的提交历史,你需要在不丢失任何步骤的情况下重写整个历史,这是我要做的事情:

  1. 将您的存储库复制到文件系统的其他位置进行备份。

  2. 使用 Git 日志,我会发现每组提交都可以放在同一个功能分支中。我会记下最后一次提交的哈希值和相关的功能标题。

  3. 对于这些组中的每一个,我都会创建一个功能分支

    1. 从 master 开始 git checkout master
    2. 创建并切换到新功能分支get checkout -b <name of the feature>
    3. 删除自上次 git reset --hard <the hash of the last commit of the feature>
    4. 以来的所有提交
  4. 现在你有一堆不错的功能分支,你需要将它们合并到 master 中。但首先,您需要清除 master 上的所有提交历史记录。您可以通过将分支重置为第一次提交来做到这一点 git 日志:git reset --hard $(git rev-list --max-parents=0 HEAD)

  5. 最后,按照最初添加提交的顺序,您可以对步骤 2 中创建的每个分支执行 git merge <a feature branch>。如果您没有忘记任何提交并尊重它们出现的顺序,你不应该有任何冲突。