应该将 Django 项目中的迁移目录推送到 git repo 吗?
Posted
技术标签:
【中文标题】应该将 Django 项目中的迁移目录推送到 git repo 吗?【英文标题】:Should the migrations directory in a Django project should be pushed to the git repo? 【发布时间】:2018-06-30 19:31:12 【问题描述】:在 Django 项目中,当模型发生变化时,迁移文件也会发生变化。如果我将迁移目录添加到 git,这将引发其他人的冲突。如果我不添加它,有时这会在迁移时引发服务器错误。你是怎么解决的?
【问题讨论】:
为什么会引发冲突?每个人都应该提交他们的迁移,并运行其他人的迁移。 eg:我拉代码做迁移,一个非空字段提醒我添加一个默认值,这个时候,其他人可能添加了不同的值 但这正是您应该提交迁移的原因。你不应该在别人的代码上运行 makemigrations; 他们应该已经运行它并进行了包含默认值的迁移,你只需要运行他们的。 在我们的团队中,我们总是排除迁移文件夹,在拉取过程中,我们会整理出不同默认值等冲突,讨论模型差异然后应用迁移。我们从不将迁移推送到阶段和生产服务器。 【参考方案1】:来自 Django migrations docs。
每个应用程序的迁移文件位于该应用程序内部的“迁移”目录中,旨在提交到其代码库并作为其代码库的一部分进行分发。您应该在您的开发机器上进行一次迁移,然后在您同事的机器、暂存机器以及最终的生产机器上运行相同的迁移。
这是您应该将 Django 迁移与 VCS 一起使用的一种方式。这样可以在不同的机器和数据库之间保持一致性,并且还可以防止合并冲突。
【讨论】:
这种冲突是两个人同时修改一个模型,还是在做mgirations时只给不同的默认值? 是的,这是在 VCS 中管理迁移时发生的冲突之一。 @光耀以上是关于应该将 Django 项目中的迁移目录推送到 git repo 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 git 子模块推送到 AWS Elastic Beanstalk?
每当我尝试将我的 django 应用程序推送到 Heroku 时,我的日志文件中都会出现以下错误,请协助我应该如何解决它,