本文档提供了针对主流文本编辑器(不包括功能齐全的集成开发环境)的 gitignore 模式的详细说明。它涵盖了 Sublime Text、Vim、Emacs 以及其他轻量级代码编辑器,并解释了在使用这些工具时应从版本控制中排除的文件和目录。有关特定于集成开发环境的 gitignore 模式的信息,请参阅 Visual Studio and .NET、JetBrains IDEs 或 Eclipse and Java Development。
文本编辑器通常会生成各种临时、缓存和用户特定配置文件,这些文件应从版本控制中排除。虽然比功能齐全的集成开发环境简单,但这些编辑器仍会创建不应包含在共享存储库中的文件。
文本编辑器文件排除图
来源:Global/Vim.gitignore1-19 Global/Emacs.gitignore1-9 Global/SublimeText.gitignore1-31
Emacs是一款高度可定制的文本编辑器,其扩展功能基于其专有的 Lisp 方言(Emacs Lisp)。Emacs gitignore 模板排除了几类文件。
| 模式 | 描述 | 目的 |
|---|---|---|
*~ | 备份文件 | 自动创建的备份文件 |
\#*\# | 自动保存文件 | 编辑时创建,以防止数据丢失 |
.emacs.desktop | 桌面会话 | 在会话之间维护打开的缓冲区 |
*.elc | 已编译的 Elisp | 字节码编译的 Emacs Lisp 文件 |
/elpa/ | 软件包目录 | 从 Emacs 包管理器安装的软件包 |
/auto/ | AUCTeX 自动文件夹 | 自动生成的 TeX 样式文件 |
.dir-locals.el | 目录设置 | 特定于目录的 Emacs 设置 |
Emacs 还为各种内置子系统提供了特定的排除项
.org-id-locations, *_archive)*_flymake.*)/eshell/history, /eshell/lastdir)flycheck_*.el)/server/).projectile)/network-security.data)Sublime Text 是一款流行的轻量级代码编辑器,可通过插件实现高度可定制。其 gitignore 模板侧重于排除用户特定文件和包管理数据。
| 模式 | 描述 | 目的 |
|---|---|---|
*.sublime-workspace | 工作区状态 | 用户特定文件,包含打开的文件、光标位置 |
*.tmlanguage.cache | 语言缓存 | 用于语法高亮定义的缓存文件 |
Package Control.* | 包控制 | 包管理元数据和缓存文件 |
sftp-config.json | SFTP 配置 | 包含敏感服务器详细信息和凭证 |
GitHub.sublime-settings | GitHub 集成 | 包含 GitHub 认证令牌 |
Sublime Text 模板明确指出,项目文件(*.sublime-project)通常应包含在存储库中,除非大部分贡献者不使用 Sublime Text。
来源:Global/SublimeText.gitignore1-31
Vim(和 Neovim)在编辑过程中会创建各种临时和交换文件,以提供诸如崩溃恢复等功能。Vim gitignore 模板排除了这些文件。
| 模式 | 描述 | 目的 |
|---|---|---|
[._]*.s[a-v][a-z], [._]*.sw[a-p] | 交换文件 | 编辑过程中创建,用于崩溃恢复 |
Session.vim, Sessionx.vim | 会话文件 | 存储窗口布局和打开的缓冲区 |
.netrwhist | 文件浏览器历史记录 | 内置文件浏览器的历史记录 |
*~ | 备份文件 | 保存文件时创建 |
tags | 标签文件 | 用于代码导航 |
[._]*.un~ | 撤销文件 | 持久化撤销历史记录 |
Vim 模板包含复杂的模式匹配,以捕获所有可能的交换文件命名约定,这些约定可能因编辑器的配置而异。
文本编辑器文件生成工作流
来源:Global/Vim.gitignore1-20 Global/Emacs.gitignore1-50 Global/SublimeText.gitignore1-31
文本编辑器 gitignore 模式比较
来源:Global/Vim.gitignore1-20 Global/Emacs.gitignore1-48 Global/SublimeText.gitignore1-31
尽管在功能和架构上存在差异,文本编辑器在应从版本控制中排除的文件类别上存在共性。
临时文件:编辑会话期间创建的、不打算持久化的文件
[._]*.sw[a-p])\#*\#)用户特定配置:在开发者之间有所不同的设置
*.sublime-workspace).emacs.desktop)Session.vim)缓存文件:为提高性能而生成的文件
*.tmlanguage.cache)*.elc)备份文件:为防止数据丢失而创建的副本
*~)包/插件数据:与编辑器扩展相关的文件
Package Control.*)/elpa/)来源:Global/Vim.gitignore1-20 Global/Emacs.gitignore1-48 Global/SublimeText.gitignore1-31
在使用文本编辑器时,请注意某些操作系统文件可能会干扰您的工作流程。这些文件也应被排除
macOS 会创建诸如 .DS_Store 和资源分叉(.AppleDouble)之类的系统文件,它们不应出现在存储库中,并且在跨操作系统共享时可能会引起问题。
| 模式 | 描述 |
|---|---|
.DS_Store | 文件系统元数据存储 |
._* | 资源分叉元数据文件 |
.AppleDouble | 附加资源元数据 |
一些文本编辑器具有创建用于备份或项目共享目的的存档文件的功能。这些存档通常应被排除。
| 扩展 | 描述 |
|---|---|
*.zip | ZIP 存档,有时用于备份 |
*.gz, *.bz2 | 压缩文件 |
*.tar | 磁带存档 |
来源:Global/Archives.gitignore1-34
使用特定模板:将合适的文本编辑器 gitignore 模板与您的编程语言和操作系统模板结合使用。
考虑团队多样性:如果团队成员使用不同的编辑器,请包含所有编辑器的 gitignore 模式。
项目文件:与工作区文件不同,项目定义文件通常应包含在存储库中(例如 Sublime Text 的 *.sublime-project 文件)。
安全性:始终排除可能包含敏感信息的文件,例如 SFTP 配置或身份验证令牌。
定期更新:随着编辑器发布新版本,它们可能会创建需要排除的新类型文件。请保持您的 gitignore 模板最新。
来源:Global/SublimeText.gitignore9-11 Global/SublimeText.gitignore29-31