Хоча моя відповідь може бути не такою тривалою, як Ремус, я вважав це справді хорошим рішенням. У мене це ще не створено у виробництві, тому YMMV *.
Liquibase
По суті це XML-файл, в якому ви вносите зміни в схему до своєї бази даних як нові елементи всередині файлу XML. Наприклад:
<createTable tableName="department">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
Він має повністю розроблений синтаксис, так що ви можете майже все, що завгодно, робити з вашою базою даних.
Ви також встановите у своїй установці Liquibase, яку базу даних ви хочете версії. Тоді ви "запускаєте" .xml з доданим виконуваним Java (jar-файлом). Це по суті відтворює ті зміни, визначені у XML у вашій базі даних.
Справжнім шахраєм є те, що ви зберігаєте цей XML-файл у тій самій папці, що і ваш код. Тож у моєму випадку це був Гіт. У мене був цей XML-файл у моїй папці проекту (такий же рівень, як /.git), і тоді, коли я перемикав гілки, XML-файл змінився б у версію цієї гілки, і я запустив би файл .jar, і моя база даних тепер би відображала цю гілку.
* Примітка. Я не закінчив реалізацію, тому що у мене виникли проблеми з підключенням Java до SQL Server. Потрібні деякі драйвери jdbc і такі, і мені не було в настрої. Отже, ваш пробіг може відрізнятися.