Sign In

@cuiguojie/gap

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cuiguojie/gap

Automatic Git profile switching based on remote URL patterns

latest
Source
npmnpm
Version
1.0.2
Version published
Weekly downloads
7
250%
Maintainers
1
Weekly downloads
 
Created
Source

git-auto-profile (gap)

自动根据 Git 远程仓库 URL 切换 Git 配置和 SSH 密钥的工具。

功能特点

  • 🎯 智能匹配:基于远程仓库 URL 自动应用对应 Git 配置
  • 🔑 多 SSH 密钥:为不同项目使用不同的 SSH 密钥
  • 🛡️ 非破坏性:渐进式采用,不影响现有 Git 配置
  • 简单易用:简洁的命令行交互,无需复杂配置

使用

使用 npx(推荐)

npx @cuiguojie/gap <command>

使用 pnpm

pnpm dlx @cuiguojie/gap <command>
# 或
pnpm exec @cuiguojie/gap <command>

使用 bun

bunx @cuiguojie/gap <command>

快速开始

1. 初始化

npx @cuiguojie/gap init

设置 profile 文件存储目录,默认:~/.git-auto-profile/profiles

2. 创建 Profile

npx @cuiguojie/gap create

交互式创建 profile:

  • 输入 profile 名称(如:work-github)
  • 设置 Git 用户名和邮箱
  • 选择 SSH 密钥
  • 设置匹配的 URL 模式(如:git@github.com:your-org/**)

3. 查看当前配置

npx @cuiguojie/gap whoami

显示当前 Git 配置和激活的 profile

4. 查看所有 Profile

npx @cuiguojie/gap list

列出所有已创建的 profile 及其关联的 URL 模式

5. 删除 Profile

npx @cuiguojie/gap remove

交互式选择要删除的 profile

使用示例

工作和个人项目分离

  • 创建工作 profile
npx @cuiguojie/gap create
# Profile name: work-github
# Git user.name: Your Work Name
# Git user.email: work@company.com
# SSH key: ~/.ssh/id_ed25519_work
# URL pattern: git@github.com:company/**
  • 创建个人 profile
npx @cuiguojie/gap create
# Profile name: personal-github
# Git user.name: Your Name
# Git user.email: personal@example.com
# SSH key: ~/.ssh/id_ed25519_personal
# URL pattern: git@github.com:your-username/**

多平台支持

支持各种 Git 平台:

  • GitHub: git@github.com:username/**
  • 自建 GitLab: git@your-gitlab.com:group/**

URL 模式语法

支持通配符匹配:

  • ** 匹配任意字符(包括路径分隔符)
  • * 匹配任意字符(不包括路径分隔符)

示例:

  • git@github.com:your-org/** - 匹配组织下所有仓库
  • git@gitlab.com:company/project-* - 匹配特定前缀的项目
  • git@*.company.com:*/** - 匹配公司所有 GitLab 实例

工作原理

  • ~/.gitconfig 中添加 managed block
  • 使用 includeIf 规则根据远程 URL 动态加载配置
  • 每个 profile 存储为独立的 .conf 文件
  • 完全兼容现有 Git 配置

文件结构

~/.git-auto-profile/
├── config.json                 # 工具配置
└── profiles/
    ├── work-github.conf        # 工作配置
    ├── personal-github.conf    # 个人配置
    └── client-xyz.conf         # 客户配置

开发

本地开发

# 克隆项目
git clone <repo-url>
cd git-auto-profile

# 安装依赖
npm install

# 测试本地版本(在项目内使用)
npm run start init
npm run start create

# 或临时全局测试
npm link
npx @cuiguojie/gap --help

# 构建发布版本
npm run build

项目结构

src/
├── cli.ts              # CLI 入口
├── commands/           # 命令实现
│   ├── init.ts         # 初始化
│   ├── create.ts       # 创建 profile
│   ├── list.ts         # 列出 profile
│   ├── remove.ts       # 删除 profile
│   └── whoami.ts       # 查看当前配置
├── gitconfig-manager.ts # Git 配置管理
└── utils.ts            # 工具函数

包管理器支持

npm/yarn

npx @cuiguojie/gap <command>

pnpm

pnpm dlx @cuiguojie/gap <command>
# 或
pnpm exec @cuiguojie/gap <command>

bun

bunx @cuiguojie/gap <command>

常见问题

Q: 如何修改已创建的 profile?

A: 直接编辑 ~/.git-auto-profile/profiles/[profile-name].conf 文件,或使用 npx @cuiguojie/gap remove 后重新创建。

Q: 支持 Windows 吗?

A: 待测试

Q: 会影响现有 Git 配置吗?

A: 不会。工具只在 managed block 内操作,不会影响现有配置。

Q: 如何调试?

# 查看详细输出
npx @cuiguojie/gap whoami

# 检查配置文件
cat ~/.gitconfig
ls ~/.git-auto-profile/profiles/

许可证

MIT License - 详见 LICENSE 文件

Keywords

git

FAQs

Package last updated on 29 Jul 2025

Related posts