Mic*_*ith 100 python git django
我应该在文件中添加Django迁移.gitignore
文件吗?
由于迁移冲突,我最近得到了很多git问题,并且想知道我是否应该将迁移文件标记为忽略.
如果是这样,我将如何添加我的应用程序中的所有迁移,并将它们添加到.gitignore
文件中?
Sve*_*ach 106
引自Django迁移文档:
每个应用程序的迁移文件都位于该应用程序内部的"迁移"目录中,旨在提交给代码库并作为其代码库的一部分进行分发.您应该在开发计算机上进行一次,然后在同事的计算机,临时计算机以及最终的生产计算机上运行相同的迁移.
如果您遵循此过程,则不应在迁移文件中收到任何合并冲突.
要缓解您当前遇到的任何问题,您应指定哪个存储库或分支具有迁移文件的权威版本,然后使用git的属性机制为这些文件指定合并策略"ours".这将告诉git始终忽略对这些文件的外部更改,而不喜欢本地版本.
Rob*_*b L 22
没有.
我已经多次这样做了,在我的生活中,我不能找到一个需要在回购中迁移的案例.
正如我所看到的,架构的最终记录是models.py
.如果我合并的改变和别人拉它,都将是正确的,他们在运行时makemigrations
和migrate
.没有必要定义"我们的"战略对于迁移的定义.
如果我们需要回滚,那么我们还原models
并迁移.一切都好,没有问题.
没有抱怨某个领域已经存在,等等.
我想知道是否有人能给我一个特定的案例,在我开始工作之前必须合并另一个开发人员的迁移文件是一个优势.我知道文档说我应该,所以我认为是这样的.但我从来没有遇到过一个.
任何人?
tec*_*kuz 11
引自 2018 年文档,Django 2.0。(两个单独的命令 =makemigrations
和migrate
)
有单独的命令来进行和应用迁移的原因是因为您将迁移提交到您的版本控制系统并将它们与您的应用程序一起发布;它们不仅使您的开发更容易,而且其他开发人员和生产环境也可以使用它们。
https://docs.djangoproject.com/en/2.0/intro/tutorial02/
Sup*_*ova 10
您可以按照以下流程操作.
您可以在makemigrations
本地运行,这将创建迁移文件.将此新迁移文件提交到repo.
在我看来,你根本不应该makemigrations
投入生产.您可以migrate
在生产环境中运行,您将看到从本地提交的迁移文件中应用了迁移.这样您就可以避免所有冲突.
在LOCAL ENV中,创建迁移文件,
python manage.py makemigrations
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
现在提交这些新创建的文件,如下所示.
git add app/migrations/...
git commit -m 'add migration files' app/migrations/...
Run Code Online (Sandbox Code Playgroud)
在PRODUCTION ENV中,仅运行以下命令.
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
TL;DR:提交迁移,解决迁移冲突,调整您的 git 工作流程。
感觉你需要调整你的git工作流程,而不是忽略冲突。
理想情况下,每个新功能都在不同的分支中开发,并与拉取请求合并。
如果存在冲突,则无法合并 PR,因此需要合并其功能的人需要解决冲突,包括迁移。这可能需要不同团队之间的协调。
提交迁移文件很重要!如果出现冲突,Django 甚至可以帮助您解决这些冲突;)
我无法想象为什么你会遇到冲突,除非你以某种方式编辑迁移?这通常会导致糟糕的结果 - 如果有人错过了一些中间提交,那么他们将无法从正确的版本升级,并且他们的数据库副本将被损坏。
我遵循的过程非常简单 - 每当您更改应用程序的模型时,您还可以提交迁移,然后该迁移不会更改- 如果您需要模型中的不同内容,那么您可以更改模型并提交一个迁移新的迁移伴随着您的更改。
在新建项目中,您通常可以在发布时删除迁移并使用 0001_ 迁移从头开始,但如果您有生产代码,则不能(尽管您可以将迁移压缩为一个)。
通常使用的解决方案是,在将任何内容合并到 master 之前,开发人员必须提取所有远程更改。如果迁移版本存在冲突,他应该将本地迁移(远程迁移已由其他开发人员运行,并且可能在生产中运行)重命名为 N+1。
在开发过程中,不提交迁移可能是可以的(不过不要添加忽略,只是不要添加add
)。但是一旦投入生产,您将需要它们来使架构与模型更改保持同步。
然后,您需要编辑该文件,并将其更改dependencies
为最新的远程版本。
这适用于 Django 迁移以及其他类似的应用程序(sqlalchemy+alembic、RoR 等)。
归档时间: |
|
查看次数: |
39968 次 |
最近记录: |