我们正在 feature/x
中开发一项功能。我们需要时不时地将此功能 merge 到 master
中,并将 master
merge 回 feature/x
以保持同步。 feature/x
分支也作为远程分支存在,因此 rebase 在这里并不是一个很好的选择。
我们希望在将来的某个时刻禁用/stash master
中的实际功能。事实上,我希望能够在 master
中创建一个提交 K,以便通过将其 stash 在 UI 中来禁用正在开发的功能,但保留底层机制。
我还希望它能够工作,这样当我从 master
merge 到 feature/x
时,我将获得除 K 之外的所有提交。另外,当我从 feature/x
merge 到 master
,提交 K 仍应应用于 master
,从而保持功能 stash 。
我已经尝试过
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
merge 到 feature/x
似乎不会导致双向 merge 。因此,每次我从 feature/x
merge 到 master
时,我都必须再次禁用该功能,然后此禁用提交将流回 feature/x
等等。有更好的办法吗?
最佳答案
问题是你真正想做的是 rebase 。您可以为您所做的每个 rebase 旋转新的分支,但根据您执行此操作的频率,这可能是不切实际的。
这是一个额外的步骤,但您可以设置一个(非远程)分支 feature/disable_x
,其中仅包含用于禁用 x
的补丁。然后,当您 merge feature/x
时,也重新设置基准并 merge disable_x
。
关于git - 禁用 master (git) 中的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20219460/