git放弃主分支

时间:2014-10-10 08:07:01

标签: git merge

在我的git存储库中,我创建了一个名为alt的新分支。经过一些工作后,似乎alt中的解决方案优于我的主分支中的解决方案,所以我想放弃master并使alt成为新的master。

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

所以我想放弃C3,但仍然将它保留在提交历史记录中供将来参考,然后返回到一个分支。最好的方法是什么?
我的第一个想法是将master移动到C5,然后将alt合并到master中。它是否正确?我是否需要先移动大师? 我也可以将master合并为alt,通过将版本保持为alt来解决所有合并冲突,然后将alt重命名为master 或者我应该将master移动到alt并简单地删除分支alt,将C3作为已停止的分支,这实际上是现实吗? 我认为这里有多种解决方案,是否有最佳实践可以遵循(总是将分支机构合并为主机与开放式机箱)?

1 个答案:

答案 0 :(得分:4)

我认为最简单的方法是使用我们的合并策略将master合并为alt。这将创建一个新的提交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

如果你想要一个线性历史记录,你也应该能够改变而不是合并。只需用git rebase --strategy=ours alt master替换前两行。

请检查您输入的每个命令。我没有测试过这个。当然,git是git,如果出现问题,什么都不会丢失......

相关问题