我有一个包含两个环境(staging and production)
的Rails应用。我在Bitbucket有我的项目。我在branch (staging-branch)
创建了一个master
,我在暂存环境中用于deploying
。
一旦我的暂存工作,我需要将从暂存到生产的一些变化部署,而不是我为暂存进行的整个更改。在这种情况下,如果我在bitbucket中创建pull request
,它将获取所有已更改的文件,并将其添加到master中。
但是,我想只将某些文件移动到制作中。我怎样才能做到这一点?对于这种情况,我应该采取什么方法?
答案 0 :(得分:0)
我会采取两种方法。
第一个,也是最好的一个是使用正确的原子特征和修补程序分支。这些将包含实现某个功能或修复某个问题所需的任何和所有更改。将此分支合并到staging
并验证其工作方式后,您只需将同一分支合并到production
。
这需要一定程度的努力来保持您的提交历史记录清洁,而不是在同一分支中混合不同的功能或修复。
在工作中,我们使用GitHub Flow获得了很好的结果:https://guides.github.com/introduction/flow/
如果您直接在staging
分支上进行开发,则第二个是创建一个新分支,并使用git cherry-pick
仅选择您要进入的更改production
,然后合并这个新分支。
以下是git cherry-pick
:http://git-scm.com/docs/git-cherry-pick
后者当然感觉像是一个黑客,并且可能会让你在跟踪staging
和production
如何分歧时遇到问题 - 虽然我不建议将其作为永久解决方案,但我将其作为一个可用于解决您当前问题的选项。