混帐:如何正确合并两个功能和完全不同的分支?(Git: How to properly merge

2019-08-06 04:58发布

试想一个情况下,你有同一项目的两个分支,第一支急剧重构了另一种的一部分。 不过一会儿,你需要保持两个分支的功能,所以你在做错误修复和重要特征添加到他们两个,有时在没有对称的方式。 而在某些时候来时,你必须重构的分支合并到原来的一个时刻。 什么是在这样的情况下使用最好的技术? 它仍然可以保持历史是否干净?

但更重要的是什么应该是我在这样的情况下最初的战略?

Answer 1:

由于任务是简单地使用另一个分支,而不是master ,你可以简单地删除master完全分支或重命名它让我们说- legacy ,然后采取另一个分支,并改名为master 。 而已。 以下是你可能需要执行本地和GitHub上实现的目标实际的命令:

git branch -m master legacy               # rename local master to legacy
git checkout legacy
git branch -m another_branch master       # another_branch will be our new master

本地我们现在完成了。 然而,你不能简单地删除master GitHub上的分支。 首先,您需要采取另一种分支为默认值。 这可以在知识库中完成Settings > Default Branch 。 一旦你这样做,你可以继续:

git push origin :master                   # remove master on GitHub
git push origin master                    # push out our new master branch
git push origin legacy                    # push our legacy branch too

然后返回到Settings > Default Branch和开关默认分支回master 。 此外,您可以删除您可能会在迁移过程中创建的所有多余的树枝。

另外,如果你正在寻找保存在历史记录你的所有行动,检查一个正确的答案在这里 。



Answer 2:

既然你有2个分支,一个是从其他显著重构,和你保持两......我想说的Git不会神奇地帮你。 对于git的帮助,你应用补丁/修改1只需要类似于支2(但不完全一样)。

由于这是重构,代码可能不会是相似的,除非新的代码是模块化的,有两个分支上相同。

你应该首先做了什么?

  • 添加一些单元测试和/或集成测试代码到初始分支
  • 运行2号分支相同的集成测试
  • 对于新的变化添加测试
  • 那么你可以验证更改为两个分支工作

更新:对于改变两个分支的管理,你可能只是需要一个过程,如: - 主要分支,重构工作 - 合并每一个“故事”或工作项分支遗产作为他们完成

第二个步骤是什么,我觉得这是一个大量的工作,如果代码是部门之间的差异太大。 如果你必须保持两个分支,尝试封装新的代码可以在两个分支中使用的库。 这将使合并从一个分支到其他清洁剂。



文章来源: Git: How to properly merge two functional and quite different branches?