gpt4 book ai didi

django - git 和 django 迁移 : ignore the migrations files

转载 作者:太空狗 更新时间:2023-10-29 13:31:13 25 4
gpt4 key购买 nike

我应该将 django 迁移文件保存在 git 存储库中吗?在开发团队中,他们管理数据库的方式发生了变化。

例如,Tom 更改了他们的模型,并运行了 makemigrations 和 migrate,他的数据库现在已经更改,以及他的迁移文件,保留了他的迁移故事。

与此同时,Bob 也进行了更改。他有关于另一个模型的迁移文件,他运行了 makemigrations 和 migrate 命令,并且他的数据库发生了变化。

Tom 和 Bob 在同一个应用程序中工作,因此,他们共享相同的迁移文件。同样的数据库。

那么,如果 Bob 将他们的代码推送到 git repo,然后 Tom 从 git repo pull 或获取代码,会发生什么?迁移文件将混合在一起,它们的故事将被打破。另外,如果 db 本身是一个 sqlite 文件,我应该将它保存在 git repo 中吗?

最佳答案

你绝对应该在你的仓库中保留迁移!对于某些项目,通过编辑将初始数据或其他函数包含在迁移中是有意义的,因此通过从 models.py 自动生成它们来设置每个开发人员的环境并不适用于每个项目。

如果 Tom 和 Bob 都进行了彼此独立的更改(Tom 添加一个字段,Bob 添加另一个字段),则迁移文件将在您创建 merge 迁移时起作用。如果 Tom 和 Bob 发生冲突,则可能需要协调:

$ python manage.py migrate
CommandError: Conflicting migrations detected; multiple leaf nodes in the migration graph: (0002_mymodel_my_field_tom, 0002_mymodel_my_field_bob in myapp).
To fix them run 'python manage.py makemigrations --merge'

$ python manage.py makemigrations --merge
Merging myapp
Branch 0002_mymodel_my_field_bob
- Add field my_field_bob to mymodel
Branch 0002_mymodel_my_field_tom
- Add field my_field_tom to mymodel

Merging will only work if the operations printed above do not conflict
with each other (working on different fields or models)
Do you want to merge these migration branches? [y/N] y

Created new merge migration /myapp/migrations/0003_merge_20170517_1445.py

这是一个很好的读物:

https://www.algotech.solutions/blog/python/django-migrations-and-how-to-manage-conflicts/

关于django - git 和 django 迁移 : ignore the migrations files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44027755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com