Django:合并迁移冲突的最佳方法

sch*_*tte 8 python django django-migrations

我目前在开发部门工作,有一天我需要将其合并。目前,我的dev分支上最多有20个迁移文件,而master上现在大约有相同数量。我需要在两个分支上进行迁移,这将导致迁移具有相同的前缀,

(例如0003_auto

换句话说,如果您makemigrations使用相同的前缀生成了迁移文件,那么最好的/安全的处理方法是什么。

这是我弄清楚自己的两种方法(可能完全错误):

  1. 删除所有迁移文件,将这些代码合并,然后运行一个新的makemigrationsmigrate这将导致只有一个迁移文件。

  2. 使用该--merge标志让django进行合并:

    makemigrations --merge
    
    Run Code Online (Sandbox Code Playgroud)

现在,了解了所有这些之后,我想知道什么是处理此问题的最佳方法。通常,应该使用哪种方法才能正确合并冲突,并在每次模型更新时为我提供新的项目版本。

编辑

我认为提供逐步解决方案对于我和将来的用户来说是理想的选择,因为存在关于该主题的大量信息,但似乎没有一个简洁明了。

Mor*_*jad 6

无需担心的最简单方法是:

  1. 恢复到稳定点(冲突之前):

python manage.py migrate usersmaster 0021_signup_status

  1. 删除新的迁移文件。

  2. 重新进行迁移:

python manage.py makemigrations


ost*_*ard 5

Django文档中

由于迁移存储在版本控制中,因此您和其他开发人员有时会同时将迁移提交到同一应用程序,导致两次迁移具有相同的数量。

不用担心-数字只是供开发人员参考,Django只是在乎每个迁移都有一个不同的名称 [强调]。

  • 数字和文件名并不重要,但两个文件都将指向相同的先前迁移(依赖项部分)。 (3认同)