Original Note

============================================================================

  • self_study_notes
  • Original Note
  • Updated: 2026-10-12T10:39:27+08:00
Source provenance
Canonical route
/original-notes/self_study_notes/git/gitignore
Source path
self_study_notes/git/gitignore.md
Content hash
99dd607dda77502c6978d5af93ae0cf770ee97cf8092bb98e38746a459872538
Updated commit
c9c2d5eccd9ee09ce82352f0570d53e8b75bbb2e
Updated at
2026-10-12T10:39:27+08:00
Document type
Original Note
Source Collection
self_study_notes
Source Path
self_study_notes/git/gitignore.md
Type
Original Note
Updated At
2026-10-12T10:39:27+08:00
# ============================================================================
# 深度学习项目 .gitignore(Python / uv / PyTorch / TensorFlow / Jupyter)
# 放在仓库根目录,文件名改为 .gitignore。
#
# 设计原则:提交源码、环境定义、锁文件、实验配置与小型测试样例;
#           忽略本机环境、缓存、大型数据、训练产物和凭据。
#
# 注意:
# 1. .gitignore 只影响未跟踪文件,不会删除 Git 已有记录,也不会清除历史泄密。
# 2. 开头的 / 表示仅匹配仓库根目录,避免误伤 src/ 中同名的源码包。
# 3. 不使用 *.lock、*.json、*.yaml、*.csv、*.png、*.bin 等过宽规则。
# 4. 不直接忽略 models/、datasets/、experiments/、configs/、notebooks/。
# 5. 下方数据/产物目录是约定;不符合你的项目布局时,应调整对应路径。
# 6. 使用 Git LFS 管理权重时,应删除/覆盖对应忽略规则;LFS 不会绕过忽略。
# ============================================================================

# ----------------------------------------------------------------------------
# 01. Python 字节码、解释器与工具缓存
# ----------------------------------------------------------------------------
__pycache__/
*.py[cod]
*$py.class
.pytest_cache/
.mypy_cache/
.ruff_cache/
.pytype/
.pyre/
.hypothesis/
.dmypy.json
dmypy.json
.pyre_configuration.local

# Numba 编译缓存
*.nbc
*.nbi

# ----------------------------------------------------------------------------
# 02. uv / venv / virtualenv / Conda / PDM / Poetry 本地环境
# 保留 pyproject.toml、uv.lock、uv.toml、.python-version 和依赖清单。
# 不忽略整个 .uv/:只约定忽略明确的本地缓存目录。
# ----------------------------------------------------------------------------
.venv/
.venv-*/
.venv.*/
venv/
venv-*/
venv.*/
/env/
/ENV/
/envs/
/.conda/
/.conda-env/
/.uv-cache/
/.uv/cache/
__pypackages__/
.pdm-python
.pdm-build/
.poetry/
.direnv/

# ----------------------------------------------------------------------------
# 03. Python 打包、构建与本地安装产物
# 不忽略源码形式的 C/C++/CUDA/Cython 文件(.c/.cpp/.cu/.cuh/.pyx 等)。
# ----------------------------------------------------------------------------
/build/
/dist/
/site/
/htmlcov/
.eggs/
*.egg-info/
*.egg
*.whl
pip-wheel-metadata/
.pip-wheel-metadata/
.installed.cfg
MANIFEST
pip-log.txt
pip-delete-this-directory.txt

# 二进制扩展及本地编译产物;刻意维护的预编译库需单独放行
*.so
*.so.*
*.dylib
*.dll
*.pyd
*.o
*.obj
*.a
*.lib
*.exp
*.ilk
*.mod
*.smod
*.dSYM/

# CMake / Ninja 本地构建状态;保留 CMakeLists.txt 和 CMakePresets.json
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
CTestTestfile.cmake
CMakeUserPresets.json
compile_commands.json
.ninja_deps
.ninja_log
/cmake-build-*/

# ----------------------------------------------------------------------------
# 04. 测试覆盖率、性能分析与调试输出
# ----------------------------------------------------------------------------
.coverage
.coverage.*
coverage.xml
coverage.json
*.cover
*.py,cover
.tox/
.nox/
.cache/
.benchmarks/
*.prof
*.lprof
*.pstats
*.trace.json
*.pt.trace.json
*.nsys-rep
*.ncu-rep
*.qdrep
/test-results/
/playwright-report/

# ----------------------------------------------------------------------------
# 05. Jupyter / IPython / 交互式应用本地状态
# 正式 .ipynb 文件应提交;输出清理需要另用工具,gitignore 无法清理单元格。
# ----------------------------------------------------------------------------
.ipynb_checkpoints/
.ipython/
.jupyter/lab/workspaces/
.jupyter/runtime/
.jupyter/jupyter_*_config.json
.jupyter/jupyter_*_config.py
profile_default/
ipython_config.py
.jupyter_cache/
.marimo/
.gradio/

# ----------------------------------------------------------------------------
# 06. 下载、编译及框架缓存
# 默认用户主目录中的缓存不在仓库内;这里防止重定向到项目后的误提交。
# ----------------------------------------------------------------------------
/.hf-cache/
/.huggingface/
/.torch/
/.keras/
/.triton/
/.nv/
/.cupy/
/.jax_cache/
/.jax_compilation_cache/
/.torch_extensions/
/torch_extensions/
/torch_compile_debug/
/torchinductor_cache/
/triton_cache/
/numba_cache/
/.ray/
/ray_results/
/dask-worker-space/
*.incomplete
*.crdownload

# ----------------------------------------------------------------------------
# 07. 常见模型权重、检查点与部署模型
# 模型定义 .py、模型配置 .json/.yaml 不受这些扩展名规则影响。
# .pth 也可能是 Python 路径配置;需要提交此类文件时请按具体路径放行。
# ----------------------------------------------------------------------------
*.pt
*.pth
*.ckpt
*.safetensors
*.onnx
*.onnx.data
*.tflite
*.keras
*.weights.h5
*.gguf
*.ggml
*.engine
*.trt

# Hugging Face 常见二进制权重;不笼统忽略所有 .bin / .msgpack 文件
pytorch_model*.bin
adapter_model*.bin
training_args.bin
optimizer.bin
scheduler.bin
flax_model.msgpack

# TensorFlow SavedModel / checkpoint;不笼统忽略 *.pb 或 *.index
saved_model.pb
saved_model.pbtxt
keras_metadata.pb
*.ckpt.index
*.ckpt.meta
*.data-?????-of-?????

# ----------------------------------------------------------------------------
# 08. 数据目录:只忽略明确约定的大数据子目录,不忽略整个 data/ 或 datasets/
# “/**”忽略内容,紧接的“!…/**/”重新开放子目录遍历,
# 让第 11 节的 README / .gitkeep / .dvc 例外能在任意层级生效。
# 不要改成忽略父目录的 /data/raw/ 后,仍指望子文件例外生效。
# data/samples/、data/manifests/、data/schemas/ 默认仍可提交。
# ----------------------------------------------------------------------------
/data/raw/**
!/data/raw/**/
/data/interim/**
!/data/interim/**/
/data/processed/**
!/data/processed/**/
/data/external/**
!/data/external/**/
/data/cache/**
!/data/cache/**/
/data/downloads/**
!/data/downloads/**/
/datasets/raw/**
!/datasets/raw/**/
/datasets/processed/**
!/datasets/processed/**/
/datasets/downloads/**
!/datasets/downloads/**/

# ----------------------------------------------------------------------------
# 09. 约定的训练、评估与导出产物目录
# 这些目录仅用于产物;需要版本化的实验配置建议放 configs/ 或 experiments/。
# results/ 下需要提交的小型最终指标,应添加精确的文件例外,不要整体放行。
# ----------------------------------------------------------------------------
/checkpoints/**
!/checkpoints/**/
/weights/**
!/weights/**/
/pretrained/**
!/pretrained/**/
/pretrained_models/**
!/pretrained_models/**/
/saved_models/**
!/saved_models/**/
/model_exports/**
!/model_exports/**/
/outputs/**
!/outputs/**/
/artifacts/**
!/artifacts/**/
/results/**
!/results/**/
/logs/**
!/logs/**/
/runs/**
!/runs/**/
/multirun/**
!/multirun/**/
/reports/generated/**
!/reports/generated/**/

# ----------------------------------------------------------------------------
# 10. 实验跟踪、日志及调度系统输出
# 只忽略根目录的工具产物,不误伤 src/wandb/、src/mlflow/ 等源码目录。
# 不忽略 Hydra 正式配置目录,也不忽略整个 reports/。
# ----------------------------------------------------------------------------
/wandb/
/.wandb/
/mlruns/
/mlartifacts/
/mlflow.db
/mlflow.db-*
/.aim/
/.cometml-runs/
/.neptune/
/lightning_logs/
/tensorboard/
/tb_logs/
/.hydra/
events.out.tfevents.*
*.log
*.log.[0-9]*
*.log.gz
nohup.out
slurm-*.out
slurm-*.err
/optuna.db
/optuna.db-*

# ----------------------------------------------------------------------------
# 11. 保留目录说明、占位文件及数据版本指针
# 仅当父目录可遍历时生效;不会重新开放 .venv/、.cache/ 等整个忽略的目录。
# 不使用 !*.json / !*.yaml / !*.py 之类全局放行,避免把产物重新加回来。
# ----------------------------------------------------------------------------
!**/.gitkeep
!**/.gitignore
!**/README*
!**/LICENSE*
!**/*.dvc

# DVC 元数据应提交;缓存、临时状态、本机凭据应忽略
.dvc/cache/
.dvc/tmp/
.dvc/config.local
# 不要添加 .dvc/、*.dvc 或 dvc.lock 到忽略列表!
# .dvc/config、.dvc/.gitignore、dvc.yaml、dvc.lock、.dvcignore 应保留。

# ----------------------------------------------------------------------------
# 12. 操作系统和编辑器本地文件
# ----------------------------------------------------------------------------
.DS_Store
.AppleDouble
.LSOverride
._*
.Spotlight-V100/
.Trashes/
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.stackdump
*~
*.swp
*.swo
*.orig
*.rej
/.history/

# VS Code:保留可共享配置;提交前检查其中是否有密钥或绝对路径
/.vscode/*
!/.vscode/settings.json
!/.vscode/extensions.json
!/.vscode/launch.json
!/.vscode/tasks.json
!/.vscode/*.code-snippets

# JetBrains:默认忽略机器状态;团队需要共享的配置可再单独放行
/.idea/
*.iml
*.sublime-workspace

# ----------------------------------------------------------------------------
# 13. 临时文件、进程状态与本地工作区
# 不全局忽略 .zip/.tar/.gz/.csv/.json/.yaml/.txt/.png/.jpg/.mp4 等通用格式。
# 大型数据和下载压缩包请放进第 08 节约定的数据目录。
# ----------------------------------------------------------------------------
/tmp/
/temp/
/.tmp/
/.local/
/.scratch/
*.tmp
*.temp
*.pid
*.pid.lock

# ----------------------------------------------------------------------------
# 14. 私密配置与凭据(放在通用保留规则之后,降低被例外重新放行的风险)
# 不能替代密钥扫描;普通 config.yaml / Notebook / 日志中也可能含凭据。
# ----------------------------------------------------------------------------
.env
.env.*
*.local.env
.envrc.local

# 仅放行明确约定、且已经去掉真实密钥的环境变量模板
!.env.example
!.env.sample
!.env.template
!.env.*.example
!.env.*.sample
!.env.*.template

/.secrets/
/secrets/
/credentials/
.ssh/
.aws/
.azure/
.gcloud/
.config/gcloud/
.kaggle/
.netrc
.pypirc
.git-credentials
.comet.config
.streamlit/secrets.toml
kaggle.json
service-account.json
service-account-*.json
gcp-credentials*.json
credentials.local.json
*.pem
*.key
*.p12
*.pfx
*.keystore
id_rsa
id_dsa
id_ecdsa
id_ed25519

# ----------------------------------------------------------------------------
# 15. 按实际需要启用的精确例外(默认不启用)
# 使用 Git LFS 的文件也必须先确保不被忽略,再配置 .gitattributes。
# 不要放行整个 tests/fixtures/ 或整个 outputs/,以免顺带提交大文件或凭据。
# ----------------------------------------------------------------------------
# !/tests/fixtures/tiny_model.pt
# !/tests/fixtures/tiny_model.onnx
# !/results/final_metrics.json
# !/data/raw/example/small_sample.csv

# ----------------------------------------------------------------------------
# 16. 以下文件/目录通常需要提交:这里仅作说明,不添加全局“!”覆盖规则
# ----------------------------------------------------------------------------
# .gitignore / .gitattributes / .editorconfig
# pyproject.toml / uv.lock / uv.toml / .python-version
# requirements*.txt / requirements*.in / constraints*.txt / environment*.yml
# src/ / tests/ / scripts/ / models/ / datasets/ / configs/ / experiments/
# notebooks/*.ipynb / README* / LICENSE* / docs/ / reports/(非生成产物)
# Dockerfile* / compose*.yaml / .dockerignore / .devcontainer/ / .github/
# .pre-commit-config.yaml / dvc.yaml / dvc.lock / .dvcignore / *.dvc
# 对大型 .npy/.npz/.h5/.hdf5/.parquet/.arrow/.pkl/.pickle/.joblib/.lmdb 等数据:
# 默认按数据目录管理,不按扩展名全局忽略,避免隐藏小型测试样例和基准数据。

Evidence-backed relations

Source Note · Same Topic

切换到中文