我应该在.gitignore
文件中添加Django迁移文件吗?
由于迁移冲突,我最近收到了很多git问题,我想知道是否应该将迁移文件标记为忽略.
如果是这样,我将如何着手添加我的应用程序中的所有迁移,并将它们添加到.gitignore
文件中?
我应该在.gitignore
文件中添加Django迁移文件吗?
由于迁移冲突,我最近收到了很多git问题,我想知道是否应该将迁移文件标记为忽略.
如果是这样,我将如何着手添加我的应用程序中的所有迁移,并将它们添加到.gitignore
文件中?
引用Django migrations documentation人的话:
每个应用程序的迁移文件都位于该应用程序内部的"迁移"目录中,并被设计为作为其代码库的一部分提交和分发.您应该在您的开发机器上进行一次迁移,然后在您同事的机器、您的临时机器以及最终在您的生产机器上运行相同的migrations.
如果您遵循此过程,您应该不会在迁移文件中得到任何合并冲突.
在合并版本控制分支时,仍然可能会遇到基于同一父级迁移的多个迁移的情况,例如,如果对不同的开发人员同时引入了migrations.解决这种情况的一种方法是引入merge_migration.通常,这可以通过命令自动完成
./manage.py makemigrations --merge
这将引入一个新的迁移,它依赖于当前所有的头部migrations.当然,这只适用于头部迁移之间没有冲突的情况,在这种情况下,您必须手动解决问题.
考虑到这里的一些人建议您shouldn't将迁移提交给版本控制,我想详述一下您should实际上这样做的原因.
首先,您需要应用于生产系统的迁移记录.如果您将更改部署到生产环境并希望迁移数据库,则需要对当前状态进行描述.您可以为应用于每个生产数据库的迁移创建单独的备份,但这似乎是不必要的麻烦.
其次,迁移通常包含自定义的手写代码.并不总是可以使用./manage.py makemigrations
自动生成它们.
第三,迁移应该包括在代码评审中.它们是对您的生产系统的重大更改,其中有很多地方可能会出错.
简而言之,如果您关心生产数据,请判断迁移到版本控制中的情况.