我们正在feature/x
开发一项功能。我们需要时不时将此功能合并到master
中,并将master
合并回feature/x
以保持同步。 feature/x
分支也作为远程分支存在,因此在这里变基不是一个很好的选择。
我们希望在master
中禁用/隐藏实际功能,直到将来的某个时间点。实际上,我希望能够在master
中创建一个提交K,以便通过将其隐藏在UI中来禁用正在开发的功能,但保留底层机制。
我也希望这样做,以便当我从master
合并到feature/x
时,我将获得除K以外的所有提交。此外,当我从feature/x
合并到master
,提交K仍应在master
中应用,保持功能隐藏。
我试过
git co master
git commit -am "disable feature x for now"
=> created commit 12345678
git co feature/x
git merge -s ours 12345678
除非我在master
git co master
git merge feature/x
因此似乎与-s ours
合并master
到feature/x
并不会导致两种方式合并。因此,每次从feature/x
合并到master
时,我都必须再次禁用该功能,然后此禁用提交将返回feature/x
,依此类推。还有更好的方法吗?
答案 0 :(得分:1)
问题是你真正想要做的事情是一个rebase。您可以为每个rebase旋转新的分支,但是根据您执行此操作的频率,这可能是不切实际的。
这是一个额外的步骤,但您可以设置一个(非远程)分支feature/disable_x
,其中只包含禁用x
的补丁。然后,当你合并feature/x
时,还要修改和合并disable_x
。
答案 1 :(得分:1)
考虑使用功能标志(或feature toggles)。
这允许代码在master上合并,但只有在切换某个标志后才能使用(该功能已启用)。
优势众多:
缺点:您必须添加一些代码来管理这些标志。但是根据您的语言/编码平台,图书馆已经可以支持这一点。