本文档全面概述了 GitHub gitignore 仓库中提供的特定于编程语言的 .gitignore 模板。这些模板可帮助开发人员将特定于语言的构建产物、中间文件、依赖项和其他非必需文件排除在版本控制之外。有关特定于 IDE 的模板的信息,请参阅 开发环境模板,有关特定于框架的模板,请参阅 Web 开发模板。
该存储库包含各种编程语言的模板,从 C 和 C++ 等系统级语言到 Python 等脚本语言以及 PHP 等解释型语言。每个模板都根据其各自语言的特定构建过程、包管理系统和开发模式进行了定制。
语言模板类别
来源:C.gitignore C++.gitignore Python.gitignore Clojure.gitignore Unity.gitignore Qt.gitignore WordPress.gitignore
在不同的编程语言中,某些类型的文件会持续地被排除在版本控制之外。下图说明了这些常见模式及其与特定语言环境的关系。
来源:C.gitignore4-43 C++.gitignore4-32 Python.gitignore1-61 Unity.gitignore5-12
编译型语言在排除构建产物方面具有相似的模式,但在特定的构建工具和生态系统上有所不同。
| 类别 | C | C++ | C# (Visual Studio) |
|---|---|---|---|
| 对象文件 | *.o, *.ko, *.obj | *.o, *.obj | *.obj, *.iobj |
| 可执行文件 | *.exe, *.out, *.app | *.exe, *.out, *.app | [Dd]ebug/, [Rr]elease/ |
| 库 | *.lib, *.a, *.dll, *.so | *.lib, *.a, *.dll, *.so | *.dll, *.lib |
| 调试文件 | *.dSYM/, *.pdb | *.pdb | *.pdb, *.ipdb |
| 预编译头 | *.gch, *.pch | *.gch, *.pch | *.pch |
来源:C.gitignore4-43 C++.gitignore4-32 VisualStudio.gitignore19-34 VisualStudio.gitignore72-101
Python 等解释型语言更侧重于排除缓存文件、虚拟环境和分发包,而不是编译产物。
像 Unity 这样的游戏开发等专业环境具有反映其开发产物的独特模式。
Unity 模板专门针对游戏开发产物、构建输出和特定于平台的文件的生成。
| 类别 | 排除的模式 | 目的 |
|---|---|---|
| 项目目录 | /[Ll]ibrary/, /[Tt]emp/, /[Oo]bj/ | Unity 的工作目录 |
| 构建输出 | /[Bb]uild/, /[Bb]uilds/ | 编译后的游戏构建 |
| 日志与设置 | /[Ll]ogs/, /[Uu]ser[Ss]ettings/ | 运行时日志和用户配置 |
| 生成的脚本 | *.pidb.meta, *.pdb.meta | 自动生成的元数据 |
| 可部署包 | *.apk, *.aab, *.unitypackage | 特定平台的可部署文件 |
某些文件类型会被排除,无论使用何种编程语言
| 文件类型 | 目的 | 示例 |
|---|---|---|
| 日志文件 | 运行时日志和调试信息 | *.log, *.tlog |
| 缓存目录 | 用于更快操作的临时存储 | .cache/, .sass-cache/ |
| 环境文件 | 包含敏感数据的本地配置 | .env, local_settings.py |
| 编辑器备份文件 | 自动保存的备份 | *~, *.bak |
| 特定于操作系统的文件 | 操作系统元数据 | .DS_Store, Thumbs.db |
来源:Python.gitignore58-60 VisualStudio.gitignore94 Python.gitignore131-137
不同的语言有不同的构建系统和包管理器,每个系统都会生成自己的需要排除的文件。
来源:Qt.gitignore30-31 Python.gitignore9-27 Leiningen.gitignore5-14 ZendFramework.gitignore1-3
选择语言模板时,请考虑:
对于多语言应用程序,可以组合模板以涵盖所有必要的排除项。
来源:Python.gitignore6-7 C.gitignore VisualStudio.gitignore399-400
Python 项目使用多种环境管理工具,每种工具都有特定的需要排除的文件
| 工具 | 排除的模式 | 备注 |
|---|---|---|
| venv/virtualenv | venv/、.venv/、env/ | 标准虚拟环境 |
| pipenv | Pipfile.lock | 通常包含在版本控制中 |
| poetry | poetry.lock | 通常包含在版本控制中 |
| pyenv | .python-version | Python 版本规范 |
| pdm | .pdm.toml、.pdm-python | 包依赖管理器 |
来源:Python.gitignore130-138 Python.gitignore90-118
C 和 C++ 项目会生成各种编译产物,这些产物应该被排除
| 类别 | 排除的模式 | 目的 |
|---|---|---|
| 先决条件 | *.d | 依赖跟踪文件 |
| 对象文件 | *.o, *.obj | 编译代码 |
| 库 | *.a、*.lib、*.so、*.dll | 静态/动态库 |
| 可执行文件 | *.exe, *.out, *.app | 编译后的程序 |
| 调试文件 | *.dSYM/, *.pdb | 调试信息 |
来源:C.gitignore1-52 C++.gitignore1-32
Qt 项目有特定于框架的文件需要排除
| 类别 | 排除的模式 | 目的 |
|---|---|---|
| 生成的脚本 | moc_*.cpp、ui_*.h | 生成的 C++ 代码 |
| 构建文件 | Makefile*、*build-* | 构建配置 |
| 项目文件 | *.pro.user、*.qbs.user | 用户特定设置 |
| 编译后的资源 | qrc_*.cpp、*.qm | 资源编译 |
来源:Python.gitignore86-108 WordPress.gitignore5-7
编程语言模板通过排除特定于语言的非必需文件,为有效的版本控制提供了基础。通过根据项目的语言和框架选择适当的模板,您可以维护整洁的存储库,同时确保应用程序的构建和运行所需的所有文件都得到妥善跟踪。
使用多种语言时,请考虑组合相关模板并根据您的具体项目架构进行自定义。有关特定于框架的模板的更多详细信息,请参阅 Web 开发模板。