用途
ign(GitHub Gitignore CLI)是一个用 Rust 构建的高性能、显式管理、对 Agent 友好的 .gitignore 管理器。它由官方 github/gitignore 仓库驱动,用于在初始化新项目仓库或维护现有仓库时,生成和管理 .gitignore 文件。其核心特性包括模块化块隔离合并、上下文感知模板检测、智能别名、模糊搜索,以及保证保留用户自定义规则。工具默认完全离线运行,无隐藏网络请求,仅在显式命令下按需同步模板。
主要能力
- 基于官方 GitHub gitignore 模板库生成 .gitignore。
- 模块化块隔离合并,支持安全追加与去重。
- 上下文感知模板检测:根据项目标记、构建文件、操作系统与 IDE 配置自动选择并组合模板。
- 智能别名与模糊搜索。
- 保证保留用户自定义规则。
- 默认离线运行,零隐藏网络请求,按需显式同步模板。
- 提供结构化 JSON 输出,便于 Agent 或 CI 消费。
使用方式
前置条件与安装
在执行任何 .gitignore 操作前,应依次验证安装与初始化:
- 验证并安装 CLI 工具:
command -v ign >/dev/null 2>&1 || cargo install ign
- 验证并初始化模板库,检查
~/.config/ign/templates是否已初始化,若未就绪则克隆官方模板仓库:
ign template status >/dev/null 2>&1 || ign template init
上下文感知模板选择
为项目配置 .gitignore 时,应先检查工作区上下文(项目标记、构建文件、操作系统与 IDE 配置),自动选择并组合匹配的模板。
语言与技术栈映射:
- Cargo.toml、Cargo.lock → Rust(Rust 构建产物 target/ 与备份)
- package.json、pnpm-lock.yaml、yarn.lock → Node(Node.js / Web 前端依赖与构建输出)
- pyproject.toml、requirements.txt、Pipfile → Python(Python 虚拟环境与 pycache/)
- go.mod、go.sum → Go(Go 二进制与 vendor 目录)
- pom.xml → Java、Maven(Java Maven 项目)
- build.gradle、build.gradle.kts、gradlew → Java、Gradle(Gradle / Kotlin / Android 项目)
- composer.json → PHP(PHP Composer 依赖)
- Gemfile → Ruby(Ruby / Rails 依赖与日志)
- pubspec.yaml → Dart、Flutter(Dart / Flutter 跨平台项目)
- CMakeLists.txt、Makefile → C++ 或 C(C / C++ 构建输出)
- deno.json、deno.jsonc → Deno(Deno 缓存与构建产物)
- mix.exs → Elixir(Elixir / Phoenix 项目)
- .sln、.csproj → VisualStudio(.NET / C# 解决方案)
操作系统模板(根据当前执行环境添加):
- Linux:Linux(映射到 Global/Linux)
- macOS:macOS(映射到 Global/macOS)
- Windows:Windows(映射到 Global/Windows)
开发者工具 / IDE 模板(根据工作区设置或用户偏好添加):
- VS Code:Visual_Studio_Code(别名 vscode,映射到 Global/VisualStudioCode)
- JetBrains(IDEA/CLion/RustRover/PyCharm/GoLand):JetBrains(别名 idea,映射到 Global/JetBrains)
Agent 自动化决策示例:
# 示例:在 Linux 上检测到 Rust 项目,使用 VS Code 与 JetBrains IDE
ign init Rust macOS Linux JetBrains Visual_Studio_Code
# 示例:检测到前端 Node.js 项目
ign init Node macOS Linux Visual_Studio_Code
命令
初始化项目 .gitignore(init):
# 显式指定模板初始化
ign init Rust macOS JetBrains Visual_Studio_Code
# 交互式多选
ign init -i
# 重新初始化现有文件并保留手动自定义规则
ign init Rust macOS
追加与更新模板(add),安全地将新语言或工具模板追加到现有 .gitignore(自动去重,保留自定义规则):
ign add Linux Python
检查与审计已应用模板(status),查看当前仓库 .gitignore 的元数据(已应用模板、时间戳、自定义规则):
# 人类可读的终端输出
ign status
# 供 Agent/CI 使用的结构化 JSON 输出
ign status --json
JSON 输出结构:
{
"file_exists": true,
"path": ".gitignore",
"managed_by_ign": true,
"templates_count": 4,
"templates": [
"Rust",
"Global/macOS",
"Global/JetBrains",
"Global/VisualStudioCode"
],
"created_at": "2026-08-29T04:33:10Z",
"updated_at": "2026-08-29T04:33:21Z",
"has_custom_rules": true,
"custom_rules_lines": 2,
"custom_rules": "# Custom user rule\nscratch/",
"total_lines": 220
}
移除指定模板(remove),从 .gitignore 中移除模板,同时保持其余模板与自定义规则不变:
ign remove Global/macOS
# 或使用智能别名:
ign remove macos
搜索与浏览模板(search / list / show):
# 模糊搜索模板
ign search elixir
ign search jetbrains --json
# 查看原始模板内容
ign show Rust
# 列出某个分类下的所有模板
ign list -c global
本地模板仓库维护(template):
# 查看本地模板库状态与目录路径
ign template status
ign template path
# 手动从 GitHub 拉取最新模板
ign template update
# (顶层简写:ign update)
环境变量
- 默认模板存储路径:
~/.config/ign/templates - 自定义存储路径覆盖:
export IGN_TEMPLATES_DIR="/path/to/custom/gitignore-repo"
适用场景
- 初始化新项目仓库时自动生成匹配技术栈的 .gitignore。
- 为已有仓库追加新的语言、工具、操作系统或 IDE 忽略规则。
- 审计当前 .gitignore 已应用的模板与自定义规则。
- 在 Agent 或 CI 流程中以 JSON 形式读取 .gitignore 状态。
- 在离线环境中管理 .gitignore,并按需显式同步官方模板。
限制
- 需要先安装 Rust 工具链以通过
cargo install ign安装 CLI。 - 模板库需初始化(
ign template init)后才能使用。 - 默认离线运行,模板更新需通过显式命令(如
ign template update)触发。 - 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。