git - 数据库端更改 Git 分支之间的合并问题
问题描述
在我们的 Web 应用程序中,我们有多个分支,例如开发、发布等。开发人员使用 Liquibase 变更集 ID 在 changes.sql 文件中检查 DB 端更改,并将它们提交到开发分支。例如develop分支中的changes.sql文件:
- 变更集 ID:1
- 一些 SQL 查询
- 变更集 ID:2
- 一些 SQL 查询
现在,当代码完成时,我们所做的是从开发创建一个新的发布分支,并创建一个新的 BUILD 以在生产中提供。所以现在 changes.sql 文件也将在发布分支中可用。
与此同时,开发人员将继续在新功能的开发分支中工作,并将在 changes.sql 文件中添加新的变更集 ID。例如如下图:
- 开发变更集 id:1
- 一些 SQL 查询
- 开发变更集 id:2
- 一些 SQL 查询
- 开发变更集 id:3
- 一些 SQL 查询
他们承诺并推动开发分支。同时,一些开发者也会在release分支上check in来修复release build的bug,所以他们也会在release分支的changes.sql文件中进行修改。如下所示:
- 发布变更集 id:1
- 一些 SQL 查询
- 发布变更集 id:2
- 一些 SQL 查询
现在,最终几天后,当我们将发布分支更改合并到开发分支时,我们在 changes.sql 文件中面临排序问题。就像我说的,现在 changes.sql 文件变成了这样:
- 开发变更集 id:1
- 一些 SQL 查询
- 开发变更集 id:2
- 一些 SQL 查询
- 开发变更集 id:3
- 一些 SQL 查询
- 发布变更集 id:1
- 一些 SQL 查询
- 发布变更集 id:2
- 一些 SQL 查询
- 开发变更集 id:4
- 新的 SQL 查询
我们希望每次合并时发布变更集都应该始终位于 changes.sql 文件中的任何开发变更集的顶部。有没有办法做到这一点?
解决方案
如果您对自动合并不满意,您可以手动进行。您只需在合并开始后、合并完成之前编辑文件。如果在合并过程中出现无法自动解决的冲突,则它已经停止并让您有机会在提交合并之前编辑文件。但是如果它因为自动解析而没有停止,那么您可以通过添加--no-commit
选项来强制它停止:
git merge release --no-commit
现在您应该能够检查您的 changes.sql 文件并在需要时对其进行修改。完成后,您可以继续:
git merge --continue
推荐阅读
- visual-studio - 我可以在 Visual Studio 中的折叠代码旁边放置注释或注释之类的东西吗?
- java - 使用 Spring 配置文件和 Maven 配置文件
- css - 带有 sass-loader 的 mini-css-extract-plugin 不输出 CSS 文件
- sql-server - SQL Server:看起来有序的唯一复合键
- python-3.x - 在函数python中声明变量
- python - Python中有没有办法检查播放音频的程序
- xcode - macOS 11.0.1 - Flutter 医生给出 cocopods 错误
- python-3.x - ModuleNotFoundError: No module named 'flask_wtf' ...已验证安装在 virtualenv
- java - Intellij IDEA JCEF:在 JBR IDE 中找不到 startup() 方法
- c# - 内容类型application/xml;响应消息的 charset=UTF-8 与绑定的内容类型不匹配 (text/xml; charset=utf-8)