如何忽略迁移但忽略__init_.py?

问题描述 投票:0回答:2

我一直在思考这个问题。

请参阅此处:我应该在 .gitignore 文件中添加 Django 迁移文件吗?

我同意 Robert L 的观点,它说我们不应该进行迁移。

我的问题是:

1) 如何忽略除了迁移文件夹中的 init.py 文件之外的所有迁移?

2) 如何删除已经提交的迁移?

我希望避免开发人员之间发生任何冲突。

应用程序结构示例:

|_roles
  |__pycache__
     |___init__.cpython-37.pyc
     |_admin.cpython-37.pyc
     |_forms.cpython-37.pyc
     |_models.cpython-37.pyc
     |_urls.cpython-37.pyc
     |_views.cpython-37.pyc
  |_migrations
    |__pycache__
     |___init__.cypthon-37.pyc
     |___0001_initial.cpython-37.pyc
     |___0002_auto_20200111_1307.cpython-37.pyc
     |___0003_auto_20200111_1418.cpython-37.pyc
    |__init_.py
    |_0001_initial.py
    |_0002_auto_20200111_1307.py
    |_0003_auto_20200111_1418.py
   |__init_.py
   |_admin.py
   |_apps.py
   etc..

.gitignore:我正在考虑:

*./migrations/

但这会排除整个文件夹。

python django migration
2个回答
4
投票

您可以使用

.gitignore
。以感叹号 (!) 为前缀的行不会从 gitignore 中排除。

所以你的 .gitignore 文件看起来像这样

_migrations/*
!_migrations/__init__.py

这将忽略

_migrations
中除
__init__.py
之外的所有内容。

要删除已提交的文件,您可以使用

git rm
--cached
标志...

--cached
Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.

例如

git rm --cached _migrations/0001_initial.cpython-37.pyc

最后,我也不同意关于不进行迁移的说法。在我的选择中,提交它们正是您想要做的。它确保数据库实例在不同环境中保持一致。虽然 Django 中的许多迁移都是生成代码,但情况并非总是如此。您可能会发现手写迁移最常见的地方是当有人进行数据迁移时。

简而言之,提交迁移 .py 文件,但排除所有 .pyc 文件。


1
投票
**/迁移/*

!**/migrations/__init__.py

这段代码足以优雅地忽略迁移

© www.soinside.com 2019 - 2024. All rights reserved.