阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Git忽略规则:.gitignore配置

28次阅读
没有评论

共计 2320 个字符,预计需要花费 6 分钟才能阅读完成。

导读 在日常的开发中,当我们需要将一个项目提交到 Git 时,并不是所有的文件都需要提交,比如一些自动生成的文件,这时候就可以使用.gitignore 来忽略一些不需要提交的文件,本文着重介绍一下.gitignore 的配置语法。
.gitignore 文件

一般来说每个 Git 项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉 Git 哪些文件不需要添加到版本管理中。实际项目中,很多文件都是不需要版本管理的,比如 Python 的.pyc 文件和一些包含密码的配置文件等等。这个文件的内容是一些规则,Git 会根据这些规则来判断是否将文件添加到版本控制中。这样,被过滤掉的文件就不会出现在 git 仓库中(gitlab 或 github)了,当然本地库中还有,只是 push 的时候不会上传。

需要注意的是如果你不慎在创建.gitignore 文件之前就 push 了项目,那么即使你在.gitignore 文件中写入新的过滤规则,这些规则也不会起作用,Git 仍然会对所有文件进行版本管理。简单来说,出现这种问题的原因就是 Git 已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。因此一定要养成在项目开始就创建.gitignore 文件的习惯,否则一旦 push,处理起来会非常麻烦。

.gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为版本管理带来很大的便利。

配置规则

空行或是以 #开头的行为注释;
前面添加正斜杠 / 避免递归;
后面添加正斜杠 / 忽略目录;
* 匹配零个或多个字符;
? 匹配单个字符;
[]匹配括号内的任一字符;
! 表示不忽略 (跟踪) 匹配到的文件或目录;
下面我们看一些例子来理解上面的规则:

# 忽略 .a 文件 不管是当前目录下还是子目录下的 .a 文件都忽略
*.a
# 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a
# 忽略 m.b 文件,不忽略 mc.b
?.b
# 忽略当前目录下 TODO 文件,但不包括子目录下的 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件 不管是当前目录下的 build/ 还是子目录下的 build/ 都忽略
build/
# 忽略当前目录下的 now/ 目录
/now/
[abc]	# 匹配 a、b、c
[0-9]	# 匹配 0 至 9 的数
# 忽略 test/c.p, 不包括 server/test/c.p
test/*.p
# 忽略所有的 .pdf 文件 在 doc/ directory 下
doc/*/*.pdf
注意事项

配置文件的完整文件名就是 ”.gitignore”,注意最前面有个“.”;
配置文件是按行从上到下进行规则匹配的,如果前面的规则匹配的范围更大,则后面的规则将不会生效;
该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件);
如果文件曾经被 Git 记录过,那么.gitignore 就对它们完全无效。

配置样例

下面给出一个以 Python 开发为例的配置文件样例,更多配置请参考 GitHub 上 gitignore 仓库。

.
# 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/
*.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/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# 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/

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2320字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中