我有一个 PHP 网站 (A),我需要将其分成两部分(创建 B)。
B 将具有与 A 的大多数共同特征,很少添加,并且 A 中的很多东西对 B 无用,因此被删除。
我想创建 B 但仍然维护它,同时维护 A,可能是自动的。
我们使用 Git。
建议?
我经常遇到这种情况,我同时使用 2 种模式来修复它。
首先,由于分支“A”在分支“B”中不需要的东西比相反的要少,我建议确保在“A”中,你添加的任何你不想要部分 B 功能的代码,你应该用语句封装,if
在分支“A”的情况下总是通过,你将它合并到分支“B”中,但是在分支“B”中,你将你在分支“A”中定义的变量设置为相反的值。如果你还没有这样做,现在就去做,在分支“B”中找到你不想要的所有代码,并将它们封装在一个if
. 不要忘记,如果您添加的某个功能需要您删除分支“B”的先前功能,else
从这里开始,您所做的所有对两个分支都通用的更改都应该转到分支“A”,并将其应用于分支“B”,您转到分支“B”并与“A”合并。如果您继续这样做,您将始终保留在分支“A”中所做的更改,分支“A”将永远不会从分支“B”中获取更改(保持分开),如果您按照我在前面所说的段落中,分支 A 的“错误更改”不会对分支“B”产生任何影响,因为这些if
语句将产生 false 并且分支“A”的代码位不会运行。
第二种模式是,如果您开始为两个分支创建通用功能,但在分支 B 上,因为您不应该这样做,但可能会这样做,因为它在分支 B 上更容易测试,或者因为您只是忘记切换到分支 A在进行更改之前,那也很好。在这种情况下,您在分支“A”上需要的在分支“B”上所做的所有提交也应该从分支“A”中挑选出来。这意味着如果您在分支“B”上提交 commit1、commit2 和 commit3,但您还需要在“A”上提交,然后您签出到分支“B”并执行以下操作:
git cherry-pick commit1 commit2 commit3
这样,您在分支“B”上所做的更改也需要在分支“A”上进行,而且您不会搞砸您的模式,以至于在分支“B”上与分支“A”合并不会给你不需要的改变。