首页 > 解决方案 > 数据库端更改 Git 分支之间的合并问题

问题描述

在我们的 Web 应用程序中,我们有多个分支,例如开发、发布等。开发人员使用 Liquibase 变更集 ID 在 changes.sql 文件中检查 DB 端更改,并将它们提交到开发分支。例如develop分支中的changes.sql文件:

现在,当代码完成时,我们所做的是从开发创建一个新的发布分支,并创建一个新的 BUILD 以在生产中提供。所以现在 changes.sql 文件也将在发布分支中可用。

与此同时,开发人员将继续在新功能的开发分支中工作,并将在 changes.sql 文件中添加新的变更集 ID。例如如下图:

他们承诺并推动开发分支。同时,一些开发者也会在release分支上check in来修复release build的bug,所以他们也会在release分支的changes.sql文件中进行修改。如下所示:

现在,最终几天后,当我们将发布分支更改合并到开发分支时,我们在 changes.sql 文件中面临排序问题。就像我说的,现在 changes.sql 文件变成了这样:

我们希望每次合并时发布变更集都应该始终位于 changes.sql 文件中的任何开发变更集的顶部。有没有办法做到这一点?

标签: gitmergebranchliquibaseconflict

解决方案


如果您对自动合并不满意,您可以手动进行。您只需在合并开始后、合并完成之前编辑文件。如果在合并过程中出现无法自动解决的冲突,则它已经停止并让您有机会在提交合并之前编辑文件。但是如果它因为自动解析而没有停止,那么您可以通过添加--no-commit选项来强制它停止:

git merge release --no-commit

现在您应该能够检查您的 changes.sql 文件并在需要时对其进行修改。完成后,您可以继续:

git merge --continue

推荐阅读