菜单

编程语言模板

相关源文件

目的与范围

本文档全面概述了 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#)

编译型语言在排除构建产物方面具有相似的模式,但在特定的构建工具和生态系统上有所不同。

类别CC++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 等解释型语言更侧重于排除缓存文件、虚拟环境和分发包,而不是编译产物。

Python 特有模式

来源:Python.gitignore1-175

特定领域语言和框架

像 Unity 这样的游戏开发等专业环境具有反映其开发产物的独特模式。

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特定平台的可部署文件

来源:Unity.gitignore5-74

跨语言的常见文件类型

某些文件类型会被排除,无论使用何种编程语言

文件类型目的示例
日志文件运行时日志和调试信息*.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

语言模板选择指南

选择语言模板时,请考虑:

  1. 主要语言:选择项目主要语言的模板
  2. 框架使用:如果适用,添加特定于框架的模式
  3. 开发环境:考虑包含特定于 IDE 的模式
  4. 多种语言:对于多语言项目,合并多个模板

对于多语言应用程序,可以组合模板以涵盖所有必要的排除项。

来源:Python.gitignore6-7 C.gitignore VisualStudio.gitignore399-400

语言特定注意事项

Python 环境管理

Python 项目使用多种环境管理工具,每种工具都有特定的需要排除的文件

工具排除的模式备注
venv/virtualenvvenv/.venv/env/标准虚拟环境
pipenvPipfile.lock通常包含在版本控制中
poetrypoetry.lock通常包含在版本控制中
pyenv.python-versionPython 版本规范
pdm.pdm.toml.pdm-python包依赖管理器

来源:Python.gitignore130-138 Python.gitignore90-118

C/C++ 编译产物

C 和 C++ 项目会生成各种编译产物,这些产物应该被排除

类别排除的模式目的
先决条件*.d依赖跟踪文件
对象文件*.o, *.obj编译代码
*.a*.lib*.so*.dll静态/动态库
可执行文件*.exe, *.out, *.app编译后的程序
调试文件*.dSYM/, *.pdb调试信息

来源:C.gitignore1-52 C++.gitignore1-32

Qt 框架特定文件

Qt 项目有特定于框架的文件需要排除

类别排除的模式目的
生成的脚本moc_*.cppui_*.h生成的 C++ 代码
构建文件Makefile**build-*构建配置
项目文件*.pro.user*.qbs.user用户特定设置
编译后的资源qrc_*.cpp*.qm资源编译

来源:Qt.gitignore13-33

语言特定模板的最佳实践

  1. 维护最小化的存储库:仅包含源代码和必要的配置文件
  2. 排除生成的内容:任何可以从源代码重新创建的文件都应排除
  3. 保护敏感信息:确保包含密钥的配置文件得到妥善排除
  4. 包含构建说明:记录如何从源代码生成排除的文件
  5. 模板自定义:通过注释调整模板以满足特定项目需求

来源:Python.gitignore86-108 WordPress.gitignore5-7

结论

编程语言模板通过排除特定于语言的非必需文件,为有效的版本控制提供了基础。通过根据项目的语言和框架选择适当的模板,您可以维护整洁的存储库,同时确保应用程序的构建和运行所需的所有文件都得到妥善跟踪。

使用多种语言时,请考虑组合相关模板并根据您的具体项目架构进行自定义。有关特定于框架的模板的更多详细信息,请参阅 Web 开发模板