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

2023-06-1017:51:49后端程序开发Comments917 views字数 5150阅读模式

Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

Django项目中,.gitignore文件是一个非常重要的文件,它可以指定哪些文件或目录不应该被Git版本控制系统跟踪和提交。.gitignore文件通常包含与开发环境、测试环境、生产环境相关的文件和目录,以及一些不必要的或敏感的文件和目录。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

如果使用Git进行版本控制,需要一个Gitignore文件来忽略所有不重要的、不应该在Git存储库中的文件。比如虚拟环境和所有的.pyc文件,这些都是临时生成的,任何有权访问代码的人都可以生成,因此,没有必要将这些添加到存储库中。有很多不同的文件类型和特定的文件夹是不需要的,甚至在Django项目之外,比如在VS Codepycharm中的个人设置。如下建议忽略的文件清单: 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

1. __pycache__*.pyc*.pyoPython编译文件和缓存文件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

2. *.log*.swp*.swo:日志文件和临时文件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

3. .DS_StoreThumbs.db:操作系统生成的文件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

4. media/static/uploads/:媒体文件和静态文件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

5. *.sqlite3*.db:数据库文件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

6. env/venv/.env/.venv/:虚拟环境文件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

7. .idea/.vscode/IDE或编辑器生成的文件。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

作用 

.gitignore文件的作用是告诉Git哪些文件和目录应该被忽略,以避免将不必要的文件和目录提交到Git仓库中。这可以有效地减少Git仓库的大小,提高Git仓库的性能,同时也可以保护敏感信息不被泄露。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

Django项目开发或改动完成后将本地代码提交到代码库(比如github)时,需要考虑哪些文件需要提交,哪些不需要提交。这是因为有些库文件(比如缓存文件),本地日志文件还有一些编译文件是不必要提交的。这时可以使用.gitingnore文件忽略不需要提交的文件。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

创建.gitignore文件

Django项目的根目录下创建.gitignore文件,每行即为一项提交忽略文件/目录。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

基本语法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

  •  # 用于注释一段内容。
  • !不忽略指定的文件或者文件夹,如:!readme.md,不忽视readme.md文件。
  • * 匹配多个字符,如:*.log ,忽视所有后缀为.log的文件。
  • ?  匹配除 / 外的任意一个字符。
  • [] 方括号,匹配多个列表中的字符。
  • /** 斜杠后紧跟两个连续的星号“**”,表示多级目录。
  • /斜杠在前:匹配项目跟目录,如:/name,则表示指定路径下的名为name的文件或者文件夹。
  • /斜杠在后:匹配项目跟目录,如:name/,则表示无指定路径下在名为name的文件夹。

Django项目建议忽略的文件清单 

一般缓存文件__pycache__、本地日志文件、.logdb.sqlite3media文件夹不需要提交。PyCharm生成的文件、Env文件、第三方packagelocal_settings.py本地配置文件也不要提交。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

参考资料:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

https://djangowaves.com/tips-tricks/gitignore-for-a-django-project/ 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

文件内容:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

https://gitee.com/SteveRocket/python_framework/blob/master/django_framework/language_characteristic/.gitignore文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

涵盖了可以通过gitignore为启动的每个Django项目忽略的所有内容。将这个列表放在Django项目的根目录中,并将其命名为.gitignore,文件清单内容如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

*.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文件建议忽略文件清单及是否需要忽略数据库迁移文件
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

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

数据库迁移文件位于每个appmigrations文件夹里,迁移文件记录了模型的创建与改动。每次当创建模型或对模型字段进行修改,然后运行python manage.py makemigrations命令时都会有新的迁移文件产生。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

Django官方文档特别说明这些迁移文件属于Django项目代码中很重要的一部分,不应删除或忽略,所以建议上传。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

然而实际项目开发中,不同人可能对同一个模型做出了不同或甚至相反的改动,如果都向同一代码库提交,容易造成迁移文件冲突。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

  • 开发环境

如果项目尚处于开发阶段,可以选择提交,也可以选择不提交。每次在创建模型或对模型进行改动后,可以直接使用python manage.py makemigrations根据models.py重新生成迁移文件,而不需要保留之前迁移文件版本。如果从githubclone的项目里没有迁移文件,可以使用同样命令生产迁移文件,然后使用python manage.py migrate对数据库中的表做出修改。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

  • 生产环境

如果项目已经处于生产环境,此时本地因对模型做出修改而产生的迁移文件也需要提交。在生产环境的机器上,不要使用python manage.py makemigrations再生成一遍迁移文件,而应直接使用python manage.py migrate根据已经提交的迁移文件对数据库中的表做出修改。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

在大多数情况下,Django的迁移文件都需要提交,不建议忽略。即使发生冲突,也可以使用python manage.py makemigrations --merge合并冲突。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46840.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/46840.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定