python - 我应该在 .gitignore 文件中添加 Django 迁移文件吗?

标签 python django git

我应该在 .gitignore 文件中添加 Django 迁移文件吗?

由于迁移冲突,我最近遇到了很多 git 问题,我想知道是否应该将迁移文件标记为忽略。

如果是这样,我将如何添加我的应用程序中的所有迁移,并将它们添加到 .gitignore 文件中?

最佳答案

引自 Django migrations documentation :

The migration files for each app live in a “migrations” directory inside of that app, and are designed to be committed to, and distributed as part of, its codebase. You should be making them once on your development machine and then running the same migrations on your colleagues’ machines, your staging machines, and eventually your production machines.

如果您遵循此过程,您应该不会在迁移文件中遇到任何 merge 冲突。

在 merge 版本控制分支时,您仍然可能会遇到基于同一个父迁移的多个迁移的情况,例如如果向不同的开发人员同时引入迁移。解决这种情况的一种方法是引入 merge_migration。通常这可以通过命令自动完成

./manage.py makemigrations --merge

这将引入依赖于所有当前头部迁移的新迁移。当然,这仅在头部迁移之间没有冲突时才有效,在这种情况下,您将不得不手动解决问题。


鉴于这里的某些人建议您不应该将迁移提交给版本控制,我想详细说明您实际上应该这样做的原因.

首先,您需要记录应用于生产系统的迁移。如果您将更改部署到生产并希望迁移数据库,则需要对当前状态的描述。您可以为应用于每个生产数据库的迁移创建单独的备份,但这似乎不必要地繁琐。

其次,迁移通常包含自定义的手写代码。并非总是可以使用 ./manage.py makemigrations 自动生成它们。

第三,代码审查应包括迁移。它们是对您的生产系统的重大更改,并且可能会出现很多问题。

简而言之,如果您关心您的生产数据,请检查您的迁移到版本控制。

关于python - 我应该在 .gitignore 文件中添加 Django 迁移文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035119/

相关文章:

python - python 中 json VirusTotal API 调用出错

python - 检查字典是否是另一个字典的子集的递归函数

python - 关于 sys.exit 和 SystemExit 的混淆

django - 使用Django模型选择COUNT个?

python - 如何使用 Django-Scheduler 包?

git rebase 所有中间分支

Python:均匀分布具有不同字符串长度的输出数据

django - 连接 django-rq 时出错 : ImportError: cannot import name get_failed_queue

Git push 在写入对象时卡住并给出 504 错误

git - 更改 git 历史记录中所有提交的时区