放弃Git主分支(master branch)

4

在我的git存储库中,我创建了一个名为alt的新分支。经过一些工作,似乎alt分支的解决方案优于主分支,因此我想放弃主分支,将alt作为新的主分支。

             C1
              |
             C2
             /\
master ->  C3  C4
               |
               C5  <- alt 

我想弃用 C3 分支,但仍希望将其保留在提交历史中供日后参考,并回到一个分支。最佳方法是什么?
我的第一想法是将主分支移动到 C5,然后将 alt 分支合并到主分支。这样做正确吗?我是否需要先移动主分支呢?
我也可以将主分支合并到 alt 分支,通过保留 alt 版本来解决所有合并冲突,然后将 alt 重命名为主分支。
或者,我应该将主分支移动到 alt 分支,然后简单地删除 alt 分支,使 C3 成为已停止的分支,这实际上就是现实情况。
我认为这里有多种解决方案,是否有最佳实践可遵循(始终将分支合并回主分支 vs 开放式分支)?
1个回答

4

我认为最简单的方法是使用ours合并策略将主分支合并到备选分支中。这样会创建一个新的提交C6,它的树和C5完全相同,但它有C3和C5作为父节点,从而使C3保留在版本库中。

git checkout alt
git merge --strategy=ours master # perform the merge
git checkout master
git merge --ff-only alt          # move master to alt
git branch -d alt                # delete alt if it's not needed anymore

如果你想要一个线性历史记录,那么除了合并之外,你还可以使用rebase。只需将前两行替换为git rebase --strategy=ours alt master

请检查您输入的每个命令。我没有测试过这个方法。当然,由于Git是Git,如果出现问题,永远不会丢失任何东西...


谢谢,这个方法非常有效!我只需要在删除alt之前将其推送即可。 - od107
@od107 很好!随意接受这个答案。 :) - musiKk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接