问题描述
https://nvie.com/posts/a-successful-git-branching-model/年来,我们一直在愉快地使用这种分支方法,由此将主分支自动部署到生产环境,将开发分支自动部署到暂存环境。我们从开发中获取功能分支,在本地工作,然后在准备进行阶段测试时合并到开发中。当我们对登台上的所有新功能感到满意时,我们从developer分支中获取一个发行版,然后合并到master中,该主机将从登台到生产都使用所有新功能。
最近,在实例中,由于在develop分支上还有一个更大的未完成任务,因此一堆功能在升级中被“阻塞”。
我们使用heroku,所以我们知道一种解决方案是使用从功能分支构建的功能应用,然后仅在准备投入生产时才合并到暂存,但是对于我们的设置而言,做到这一点并不容易,因此创建本质上第二阶段环境的想法。
我们将有一个“稳定”的分支和环境,然后是一个“开发”的分支和环境。功能分支将从稳定的地方获取,在本地工作,然后合并到开发中进行测试。功能准备就绪后,可以将其合并到稳定版中,然后当我们准备发布到生产中时,我们将从稳定版发布到母版。掌握>稳定>发展。
这似乎是一个不错的计划,直到我们将其付诸实践,并在尝试将稳定的要素分支合并到开发中时开始出现奇怪的合并冲突。
发生了示例合并冲突,因为自功能分支取自稳定版以来,一些代码已合并到开发中。因此,代码不在功能分支中,而是在开发中。我希望git能够合并它,并且知道添加到开发中的代码应该保留。
我们在这里做错了什么?我们只是试图做一些不可能的事情。分支方法的其他建议是否可以解决我们的问题,即不需要大量功能分支应用程序就可以阻止分阶段发布?
解决方法
示例合并冲突之所以发生,是因为自功能分支取自稳定版以来,一些代码已合并到开发中。
因此,理想情况下,您在本地<input id="home_team" type="text" value="{{ request.form.get('team1','') }}" name="team1" required="required" />
<input id="away_team" type="text" value="{{ request.form.get('team2','') }}" name="team2" required="required" />
上重新构建功能分支,解决那里的所有冲突,然后强制推送和合并进行开发(合并将是微不足道的快进一个)
这是假设您独自一人在功能分支上工作,或者您与同事之间有良好的沟通来提醒他们,他们需要将自己的功能分支重置为您刚强行推入的功能分支。