На вопрос сложно ответить, не зная на чем вы разрабатываете. Когда я разрабатываю на Django, то у меня в каждом проекте есть пакет
settings
с тремя модулями: production, development и local. Если для разработки требуются миграции, изменяющие схему, я делаю копию базы (pg_dump | psql) с соответствующим названиям, и в local_settings прописываю название копии.
В одном проекте, где у меня очень много веток и заказчику важно, чтобы все они были независимы (он делает скрупулезный code review по каждой и мержит каждую по отдельности), я немного автоматизировал этот процесс:
database = 'frobnicator'
branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).decode('ascii').strip()
if branch.startswith('python-3'):
database = 'frobnicator-python3-port'
elif branch == 'master' or branch.startswith('FB-472'):
database = 'frobnicator-filestack-integration'
else:
raise RuntimeError('Please, update configuration file to use correct database')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': database,
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '5432',
}
}