python - 如何忽略迁移但 __init_.py?
问题描述
我一直在思考这个问题。
请参见此处:我应该在 .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/
但这将排除整个文件夹。
解决方案
你可以使用.gitignore
. 以 bang (!) 为前缀的行不会从 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 文件。
推荐阅读
- sql - 对列的一部分应用分组并获得矛盾
- reactjs - 在没有任何构建工具的情况下理解 Kotlin React
- firebase - 从 Firebase 中的 2 个集合中获取数据
- sql - Oracle 文本搜索 - 没有确切长度的模糊结果
- css - 禁用文本选择
- audio - 24kHz 音频文件问题:不支持比特率 64000
- kubernetes - 如何在位于不同区域的两个私有 GCP 集群之间建立通信?
- javascript - 使用 javascript 返回 sqlite 事务
- html - CSS选择器:有没有办法选择整个html中具有相同类名的最后一个元素?
- python - 如何使用 Python startswith 方法来组合 unicode 和 ascii 字符串?