git - 禁用 master (git) 中的功能

标签 git merge feature-branch

我们正在 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 oursmaster 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/

相关文章:

git - 如何为同一分支中的每个提交发出单独的 pull 请求?

git - git rebase 和 merge --no-ff 有什么区别

git - 以下未跟踪的工作树文件将被 merge 覆盖,但我不在乎

svn - 如何防止人们在 SVN 中使用重新集成的分支?

GitLab CI、monorepo 和功能分支

Git 找不到远程引用...但我也找不到

mysql - 是否有任何数据库在其命令行界面上支持版本控制?

python - SQLite 查询性能、Transpose、Melt 和 Pandas

audio - 我怎样才能让 ffmpeg 选择正确的文件?

git - git 工作流的特征分支统计