首页 > 解决方案 > 添加功能分支以分解 master

问题描述

我最近开始做一个废弃的项目,当时我对 git 不太了解,结果是 master 分支中有很多提交,这些提交应该是在 release/feature 分支上创建的。所以我考虑重组回购。

我尝试将提交移动到其他分支,但这给我留下了一个问题,即我仍然需要以某种方式获得最终提交以与 master 合并,我不知道该怎么做。

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

标签: gitbranch

解决方案


如果我理解正确,你想重写主分支的历史。

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

如果多个人一直在为您的 repo 做出贡献(或者如果您有很多提交),我建议您接受过去并立即开始使用发布/功能分支构建您的 repo,并称之为一天。

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

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

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

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

    1. 从大师开始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. 现在你有一堆不错的特性分支,你需要将它们合并到 master 中。但首先,您需要清除 master 上的所有提交历史。您可以通过将分支重置为第一次将其提交到 git 日志来做到这一点:git reset --hard $(git rev-list --max-parents=0 HEAD)

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


推荐阅读