当前位置:   article > 正文

Git管理秘籍:Python项目中的.gitignore策略_python gitignore

python gitignore

.gitignore的配置与使用规则

注意:

.gitignore最好放在根目录中。如果gitignore放在被忽略的父目录中,那忽略文件就无法生效。

1.1 .gitignore使用规则

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。即.gitignore文件需要再做git版本控制前就创建好,才能实现忽略文件的功能。

如果已经做了版本控制的代码,需要在中途添加.gitignore文件,那么.gitignore文件是无效的,即不起作用。具体方式就是先把本地缓存删除(改变成未track状态),具体方法如下:

#第一步,保证git status是干净状态

#第二步,清除缓存,在根目录下输入下面命令(注意:不要忘记“.”)
git rm -r --cached .

#第三步,添加所有文件
git add .

# 第四步,提交更新
git commit -m 'xxxxxx'

# 第五步,推送远程仓库
git push origin(远程仓库名)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

1.2 Git忽略规则匹配语法


空格不匹配任意文件,可作为分隔符,可用反斜杠转义
开头的文件标识注释,可以使用反斜杠进行转义
# 表示用于注释一段内容
! 不忽略指定的文件或者文件夹,如:!readme.md,不忽视readme.md文件以及不忽略每个migrations文件夹下的__init__.py文件
/ 斜杠在后(结束模式):匹配项目跟目录,如:name/,则表示无指定路径下在名为name的文件夹。即只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件。
/ 斜杠在前(开始模式):匹配项目跟目录,如:/name,则表示指定路径下的名为name的文件或者文件夹。即匹配项目跟目录,如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
** 匹配多级目录,可在开始,中间,结束。
? 通用匹配单个字符,匹配除 / 外的任意一个字符
* 通用匹配零个或多个字符,如:*.log ,忽视所有后缀为.log的文件
[] 通用匹配单个字符列表
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1.3 常用匹配示例

bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,但是不忽略bin文件。
/bin: 忽略根目录下的bin文件
/*.c: 忽略cat.c,不忽略build/cat.c
debug/*.obj: 忽略debug/io.obj,不忽略 debug/common/io.obj 和tools/debug/io.obj
**/foo: 忽略/foo.a/foo,a/b/foo等
a/**/b: 忽略a/b,a/x/b,a/x/y/b等
!/bin/run.sh: 不忽略bin目录下的run.sh文件
*.log: 忽略所有的.log文件
config.php:忽略当前路径下的config.php文件

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.4 Python Django框架常用配置

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
 
# C extensions
*.so
 
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
 
# 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 logs
pip-log.txt
pip-delete-this-directory.txt
 
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
 
# Translations
*.mo
*.pot
 
# Django stuff:
*.log
zero_demo/local_settings.py
db.sqlite3
db.sqlite3-journal
 
# Flask stuff:
instance/
.webassets-cache
 
# Scrapy stuff:
.scrapy
 
# Sphinx documentation
docs/_build/
 
# PyBuilder
.pybuilder/
target/
 
# Jupyter Notebook
.ipynb_checkpoints
 
# IPython
profile_default/
ipython_config.py
 
# pdm
.pdm.toml
 
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
 
# Celery stuff
celerybeat-schedule
celerybeat.pid
 
# SageMath parsed files
*.sage.py
 
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
 
# Spyder project settings
.spyderproject
.spyproject
 
# Rope project settings
.ropeproject
 
# mkdocs documentation
/site
 
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
 
# Pyre type checker
.pyre/
 
# pytype static type analyzer
.pytype/
 
# Cython debug symbols
cython_debug/
 
# PyCharm
.idea/
 
.DS_Store
 
#database migrations
**/migrations/*.py
!**/migrations/__init__.py
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138

注意以下代码:

#database migrations
**/migrations/*.py
!**/migrations/__init__.py
  • 1
  • 2
  • 3

这里加两个“**”表示migrations文件不在一级app目录下,这里是由项目的目录结构决定的,不同项目的migrations需要在这里根据不同情况修改。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/607921
推荐阅读
相关标签
  

闽ICP备14008679号