利用Git版本控制管理你的项目

ゝ一世哀愁。 2023-08-17 17:45 260阅读 0赞

准备工作

项目创建完成后,将项目版本控制起来,今后每个版本的迭代会非常清楚,同时也有助于项目进行协同开发。

还有一个十分重要的问题是:项目上线后,线上的运行的程序的配置与线下进行测试的配置文件是不一样的(比如数据库的配置、DEBUE模式、ALLOWED_HOSTS等等),因此我们这里需要为线下的测试环境新建一个单独的测试文件local_settings.py,

local_settings.py文件的内容如下:

复制代码

  1. # -*- coding:utf-8 -*-
  2. # 本地的settings 不用版本控制
  3. import os
  4. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  5. DATABASES = {
  6. 'default': {
  7. 'ENGINE': 'django.db.backends.sqlite3',
  8. 'NAME': os.path.join(BASE_DIR, 'local_db.sqlite3'),
  9. }
  10. }
  11. DEBUG = True
  12. ALLOWED_HOSTS = []

复制代码

注意,这个local_settings.py文件是不需要进行Git版本控制的!后面会有具体的配置说明。

创建好这个配置文件并把本地测试需要的配置数据写入后,我们需要让它在本地测试的时候生效。

一个比较好的办法是这样实现的:在项目的settings.py文件中的最后import这个local_settings.py文件,根据Python文件执行以及import导入模块的机制,我们可以让本地测试用到的数据覆盖前面线上的配置,但是需要捕获一下异常,因为我们没有对本地的这个测试文件进行版本控制!

settings.py文件中的最后加入下面这段代码:

  1. # 线下的话可以直接用
  2. # 线上不对local_settings进行版本控制~做异常处理
  3. try:
  4. from .local_settings import *
  5. except ImportError:
  6. pass

回到顶部

本地项目与Git远程仓库连接的过程

本地的基础操作

先找到项目在本地存放的目录

1303124-20190722155302774-1892389320.png

在项目目录中点击右键——“GIt Bash Here”

1303124-20190722155613410-593019576.gif

在打开的git命令界面中输入 git init

1303124-20190722155821648-63946094.png

将本地配置的local_settings.py文件及其生成的数据库文件等等其他不需要的文件忽略掉

利用gitignore:gitignore下载地址

(1)进入上面的gitignore的下载地址后,找到Python.gitignore,把里面的代码复制一下,或者直接用我这边复制好的也行:

ContractedBlock.gif ExpandedBlockStart.gif

  1. # Byte-compiled / optimized / DLL files
  2. __pycache__/
  3. *.py[cod]
  4. *$py.class
  5. # C extensions
  6. *.so
  7. # Distribution / packaging
  8. .Python
  9. build/
  10. develop-eggs/
  11. dist/
  12. downloads/
  13. eggs/
  14. .eggs/
  15. lib/
  16. lib64/
  17. parts/
  18. sdist/
  19. var/
  20. wheels/
  21. pip-wheel-metadata/
  22. share/python-wheels/
  23. *.egg-info/
  24. .installed.cfg
  25. *.egg
  26. MANIFEST
  27. # PyInstaller
  28. # Usually these files are written by a python script from a template
  29. # before PyInstaller builds the exe, so as to inject date/other infos into it.
  30. *.manifest
  31. *.spec
  32. # Installer logs
  33. pip-log.txt
  34. pip-delete-this-directory.txt
  35. # Unit test / coverage reports
  36. htmlcov/
  37. .tox/
  38. .nox/
  39. .coverage
  40. .coverage.*
  41. .cache
  42. nosetests.xml
  43. coverage.xml
  44. *.cover
  45. .hypothesis/
  46. .pytest_cache/
  47. # Translations
  48. *.mo
  49. *.pot
  50. # Django stuff:
  51. *.log
  52. local_settings.py
  53. db.sqlite3
  54. db.sqlite3-journal
  55. # Flask stuff:
  56. instance/
  57. .webassets-cache
  58. # Scrapy stuff:
  59. .scrapy
  60. # Sphinx documentation
  61. docs/_build/
  62. # PyBuilder
  63. target/
  64. # Jupyter Notebook
  65. .ipynb_checkpoints
  66. # IPython
  67. profile_default/
  68. ipython_config.py
  69. # pyenv
  70. .python-version
  71. # pipenv
  72. # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
  73. # However, in case of collaboration, if having platform-specific dependencies or dependencies
  74. # having no cross-platform support, pipenv may install dependencies that don't work, or not
  75. # install all needed dependencies.
  76. #Pipfile.lock
  77. # celery beat schedule file
  78. celerybeat-schedule
  79. # SageMath parsed files
  80. *.sage.py
  81. # Environments
  82. .env
  83. .venv
  84. env/
  85. venv/
  86. ENV/
  87. env.bak/
  88. venv.bak/
  89. # Spyder project settings
  90. .spyderproject
  91. .spyproject
  92. # Rope project settings
  93. .ropeproject
  94. # mkdocs documentation
  95. /site
  96. # mypy
  97. .mypy_cache/
  98. .dmypy.json
  99. dmypy.json
  100. # Pyre type checker
  101. .pyre/

Python.ignore

(2)然后,在自己项目的“根目录”下新建一个名为“.gitignore”的文件,先把上面的代码复制进去。

(3)通过仔细看里面的代码我们可以发现:忽略文件的名单中已经有了我们之前创建好的“local_settings.py”文件了——看来这已经是一个不成文的规定了~~如果你非要把本地测试的配置文件改成其他的名字,那么一定要记得把你自己的这个本地的测试文件的名字写在.gitignore文件中去!

(4)关于sqllit数据库的配置:.gitignore文件中除了写好了local_settings.py,其实还有“db.sqlite3”,就是默认生成的sqllit数据库文件。但是我们再看一下上面自己配置的local_settings.py文件,我把本地生成的数据库的名字改成了local_db.sqlite3。所以我们还得把这个local_db.sqlite3写入到.gitignore文件中去!

(5)Pycharm在创建项目的时候会在项目的跟目录中自动生成一个名为.idea的目录,我们应当把这个目录也加进去——注意加入的是目录的格式:.idea/

(6)最后提示大家一点:.gitignore文件中也应当把虚拟环境过滤掉,默认有对虚拟环境的过滤,但是需要注意对应目录的名字!

执行 git status 查看

执行 git status 命令查看git进行版本控制的文件及目录:

1303124-20190722172148571-2013488979.png

执行 git add . 将文件保存到缓存区

  1. git add .

执行 git commit -m ‘初始化’ 添加文件描述

  1. git commit -m '初始化'

远端的操作

本项目是利用码云进行版本控制的。

在码云创建一个私有仓库

创建完私有仓库后,会出现下面这样的页面:

1303124-20190722173821068-689347209.png

在本地与远程仓库进行连接

根据上面的提示,在本地进行与远程仓库连接的配置:

1303124-20190722174118137-381947691.png

大功告成!

这样的话线上也有了你的代码!

今后你就可以利用版本控制进行项目的开发了——自己开发与协同开发都很方便。

转载于:https://www.cnblogs.com/ryxiong-blog/p/11611527.html

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Git项目版本管理

    前言 目前我们项目基本都是使用Git作为版本控制工具,Git最大的亮点就在于其分支特性,因此这里主要介绍一下项目的分支管理。 网络上也有许多的Git Flow最佳实践