我有一个项目,我管理一个git仓库。我们使用progit分支策略(如接受的答案中所述,这里是Git branch strategy for small dev team),其中一个分支是生产分支,另一个分支是开发/测试分支。我们使用结构部署代码。在git中,dev和production分支之间的区别在哪里?
当我们准备用git制作新的产品发布版时,我们将开发/测试分支合并到生产分支中,然后使用结构部署生产分支。问题在于开发和生产之间存在代码差异 - 一些徽标发生变化,一些不同的数据库主机/凭证等等。我一直在保存一个包含差异的.patch文件,并在构建生产环境时使用这个补丁来构建补丁程序,但这种方式并不能很好地工作。特别是,如果修补程序周围的一些代码发生了变化,则完全失败 - 修补程序无法应用,并且我的部署中止。
我一直在想,如果我不应该直接将所有更改应用到生产分支?这有什么缺点?
我关心的一个特殊用例是,如果我们需要做一个修补程序。我们目前通过从生产环境中分支,进行更改,然后将该分支合并到开发和生产中来实现这一点。如果生产分支与开发分支不同,那么当修补程序合并到开发中时,这些更改是否会被拉入开发分支?
没问题,所以,这是行不通的:当我从生产环节开始'git merge development'的时候,开发分支的差异会覆盖生产分支中的仅生产更改。我需要保留不会离开生产分支的变更 - 他们既不进入任何其他分支,也不被其他分支覆盖。 –
@IgorSerebryany:如果您将开发中的变更改为与您在生产中保留的完全相同的行,那么是的,您将遇到问题。每当你做出这样的改变时,你都必须进行虚拟合并,以基本上“坚如磐石”制作部门应该如何看待这些线条。 –
我做了以下精致的芭蕾舞:(1)确保两个分支同步; (2)我将我的更改应用到生产分支(3)'git merge -s our production' from development branch; (4)git合并 - 来自生产分支的我们的开发。因此,我认为我已经达到了我想要的状态,在那里我的变化没有被破坏,也没有被转移出生产。 –