Code前端首页关于Code前端联系我们

Django进阶:.gitignore文件建议忽略文件列表以及数据库迁移文件是否需要忽略

terry 2年前 (2023-09-24) 阅读数 77 #后端开发

Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件

在Django项目中,.gitignore文件是一个非常重要的文件。它可以指定哪些文件或目录不被 Git 版本控制系统使用。跟踪并提交。 .gitignore 文件通常包含与开发环境、测试环境、生产环境相关的文件和目录,以及一些不必要或敏感的文件和目录。

如果您使用 Git 进行版本控制,则需要一个 Gitignore 文件来忽略任何不应出现在 Git 存储库中的不重要文件。与虚拟环境和所有 .pyc 文件一样,这些文件是临时生成的,并且可以由有权访问代码的任何人生成,因此无需将它们添加到存储库中。有许多不同的文件类型和特定文件夹是不需要的,甚至在 Django 项目之外也是如此,例如在 VS Code 中、Pycharm 中的个人设置中。以下是建议忽略的文件列表:

1。 __pycache__、*.pyc、*.pyo:Python编译文件和缓存文件。

2。 *.log、*.swp、*.swo:日志文件和临时文件。

3。 .DS_Store、Thumbs.db:操作系统生成的文件。

4。 media/、static/、upload/:媒体文件和静态文件。

5。 *.sqlite3、*.db:数据库文件。

6。 env/、venv/、.env/、.venv/:虚拟环境文件。

7。 .idea/、.vscode/:IDE或编辑器生成的文件。

功能

.gitignore文件的作用是告诉Git忽略哪些文件和目录,以避免将不必要的文件和目录提交到Git存储库。这样可以有效减少Git仓库的大小,提高Git仓库的性能,同时还能保护敏感信息不被泄露。

Django项目开发或变更完成后,将本地代码提交到代码仓库(如Github)时,需要考虑哪些文件需要提交,哪些文件不需要提交。这是因为一些库文件(比如缓存文件)、本地日志文件和一些编译后的文件不需要提交。这时可以使用.gitingnore文件来忽略不需要提交的文件。

创建.gitignore文件

在Django项目根目录下创建.gitignore文件。每一行都是一个忽略提交的文件/目录。

Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件

基本语法

  • # 用于评论一段内容。
  • !忽略未指定的文件或文件夹,如:!readme.md,不要忽略readme.md文件。
  • * 匹配更多字符,如:*.log,忽略所有后缀为.log 的文件。
  • ?匹配除 / 之外的任何字符。
  • []方括号,匹配字符和各种列表。
  • /** 斜杠后跟两个连续的星号“**”表示多级目录。
  • / 前面斜杠:匹配目录中的项目,如:/name,表示指定路径下同名的文件或文件夹。
  • /名称斜杠:匹配项目和目录,如:name/,表示在没有指定的路径下有该名称的文件夹。

Django项目建议忽略的文件列表

一般缓存文件__pycache__、本地日志文件、.logdb.sqlite3、媒体文件不需要提交。请勿包含 PyCharm 生成的文件、env 文件、第三方包和 local_settings.py 本地配置文件。

参考:

https://djangowaves.com/tips-tricks/gitignore-for-a-django-project/

文件内容:

https://epythongo.com/e /blob /master/django_framework/language_characteristic/.gitignore

涵盖了任何启动的 Django 项目可以通过 gitignore 忽略的所有内容。将此列表放在 Django 项目的根目录中,并将其命名为 .gitignore。文件列表内容如下:

*.pyc*.swp*.*.swpbak/bak_bak/logs/project/settings_env.pysupervisord.confredis.conf# Byte-compiled / optimized / DLL files__pycache__/*.py[codi]*$py.class
# C extensions*.so
# Distribution / packaging.Pythonenv/./build/develop-eggs/dist/downloads/eggs/.eggs/lib/lib64/parts/sdist/var/wheels/*.egg-info/.installed.cfg*.eggMANIFEST
# PyInstaller#  Usually these files are written by a python script from a template#  before PyInstaller builds the exe, so as to inject date/other infos into it.*.manifest*.spec
# Installer logspip-log.txtpip-delete-this-directory.txt
# Unit test / coverage reportshtmlcov/.tox/.coverage.coverage.*.cachenosetests.xmlcoverage.xml*.cover.hypothesis/.pytest_cache/
# Translations# *.mo*.pot
# Django stuff:local_settings.pydb.sqlite3
# Flask stuff:instance/.webassets-cache
# Scrapy stuff:.scrapy
# Sphinx documentationdocs/_build/
# PyBuildertarget/
# Jupyter Notebook.ipynb_checkpoints
# pyenv.python-version
# celery beat schedule filecelerybeat-schedule
# SageMath parsed files*.sage.py
# Environments.env
# virtualenvvenv/env.bak/venv.bak/
# Spyder project settings.spyderproject.spyproject
# Rope project settings.ropeproject
# mkdocs documentation/site
# mypy.mypy_cache/.vscode/.idea.history
# bkmonitor project settingsbkclouds/settings_env.pytencent/settings_env.pyproject*~.envrc
# DS_Store.DS_Store
# Node
# Logslogs*.lognpm-debug.log*yarn-debug.log*yarn-error.log*
# Runtime datapids*.pid*.seed*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCoverlib-cov
# Coverage directory used by tools like istanbulcoverage
# nyc test coverage.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files).grunt
# Bower dependency directory (https://bower.io/)bower_components
# node-waf configuration.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)build/Release
# Dependency directoriesnode_modules/jspm_packages/
# Optional npm cache directory.npm
# Optional eslint cache.eslintcache
# Optional REPL history.node_repl_history
# Output of 'npm pack'*.tgz
# Yarn Integrity file.yarn-integrity
# distwebpack/monitorwebpack/mobilewebpack/weixin
kernel_api/migrations/.venv/
# User upload filesUSERRES/
celerybeat-schedule.db
# django-versionlogversion_logs_html/
# tm config file.tapd_manager.yaml
# tm filesrc/tapd-manager
# preci.codeccbuild.yml
# static filesstatic/fta/static/monitor/static/weixin/
# develop configconf/platform/ieod.py
__pycache__
media# Backup files #
*.bak# If you are using PyCharm #
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/gradle.xml
.idea/**/libraries
*.iws /out/# Python #
*.py[cod]
# Distribution / packaging
.Python build/
# celery
celerybeat-schedule.*# SageMath parsed files
# Environments.venv
ENV/
# mkdocs documentation
# Sublime Text #
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
*.sublime-workspace
*.sublime-project
# sftp configuration file
sftp-config.json
# Package control specific files Package
Control.last-run
Control.ca-list
Control.ca-bundle
Control.system-ca-bundle
GitHub.sublime-settings

Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件

Django 是否需要上传数据库迁移文件?

数据库迁移文件 迁移文件位于每个应用程序的迁移文件夹中,记录模型创建和更改。每次创建模型或更改模型字段,然后运行 ​​Python manage.py makemigrations 命令时,都会生成一个新的迁移文件。

Django官方文档特别指出,这些迁移文件是Django项目代码的重要组成部分,不应删除或忽略,因此建议上传。

然而,在目前的项目开发中,不同的人可能会对同一个模型做出不同甚至相反的改变。如果都提交到同一个代码库,很容易导致迁移文件冲突。

  • 开发环境

如果项目还处于开发阶段,您可以选择提交或不提交。每当创建模型或对模型进行更改时,都可以直接使用 Python manage.py makemigrations 基于 models.py 重新生成迁移文件,而无需保留之前的迁移文件版本。如果从 github 克隆的项目中没有迁移文件,您可以使用相同的命令生成迁移文件,然后使用 python manage.py migrate 对数据库中的表进行更改。

  • 生产环境

如果项目已经在生产环境中,此时还必须提交模型变更生成的本地迁移文件。在生产环境的机器上,不要使用Python manage.py makemigrations重新生成迁移文件。相反,python manage.py 直接使用 migrate 根据建议的迁移文件修改数据库中的表。

大多数情况下,Django迁移文件必须提交,不建议忽略。另外,如果发生冲突,可以使用 python manage.py makemigrations --merge 来合并冲突。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门