从主分支部署特定功能

3
假设我们使用两个分支进行开发:stagingmaster。在迭代期间,所有团队成员所做的更改都会定期合并到 staging 分支中,并出现在我们的staging环境中。客户有能力审查更改并提供反馈。在迭代结束时,我们将 staging 分支合并到 master 中,并从 master 部署到我们的生产实例。
想象一下这样的情况:我们有一个特定的功能,只能在当前迭代中部分实现。但与此同时,我们希望我们的客户在我们的staging环境中看到(并希望得到反馈)由该功能带来的更改。因此,在迭代结束时,在我们的 staging 分支中,存在应该和不应该合并到 master 的与该功能相关的提交。
有没有办法解决这种情况?

1
你是否考虑过使用功能开关模式?这将使您能够安全地部署更改到生产环境,并以选择性的方式打开它们。这是实现持续部署的常见方法:请参阅http://martinfowler.com/bliki/FeatureToggle.html和http://stackoverflow.com/questions/22700147/mitigating-the-risks-of-auto-deployment/22702282#22702282。 - Mark O'Connor
1个回答

0

你基本上有两个选择。

  1. 从暂存分支中撤销那些你不想合并到主分支的合并:

    $ git revert <merge_commit_sha1>

    这将追加一个新的提交,"撤消"该合并提交的更改(文件删除、代码更改等)

  2. 将构成你想要推送的功能的提交范围挑选到主分支中:

    $ git cherry-pick <start_hash>^..<end_hash>

记得使用 ^,否则 git 将不包括 <start_hash> 提交


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接