AggRoot
文档目录

Git 工具

AggRoot 提供 13 个 Git 操作工具,覆盖日常版本控制全部流程。核心原则:始终使用 Git 工具,而非 Shell 执行 git 命令


工具一览

工具 说明 风险等级
GitStatus 查看工作区状态 safe
GitDiff 查看代码差异 safe
GitLog 查看提交历史 safe
GitShow 查看提交详情 safe
GitBranch 管理分支(列出/创建/删除) medium
GitCheckout 切换分支或恢复文件 medium
GitRemote 管理远程仓库 medium
GitStash 暂存/恢复更改 medium
GitAdd 添加文件到暂存区 medium
GitCommit 提交更改 dangerous
GitPush 推送到远程仓库 dangerous
GitPull 拉取远程代码 medium
GitRepoFetch 获取远程仓库概览/目录/文件 safe

GitStatus — 查看状态

查看工作区文件状态(修改、新增、删除、未追踪)。

参数

参数 类型 必填 说明
path string 仓库路径(默认当前目录)

示例

GitStatus({})
GitStatus({"path": "/projects/my-app"})

GitDiff — 查看差异

查看工作区或暂存区的文件修改差异。

参数

参数 类型 必填 说明
path string 仓库路径
staged boolean 显示暂存区差异(默认 false)
file string 指定查看差异的文件

示例

// 查看所有未暂存的修改
GitDiff({})

// 查看暂存区的修改
GitDiff({"staged": true})

// 查看特定文件的差异
GitDiff({"file": "src/app.ts"})

GitLog — 查看历史

查看提交历史记录。

参数

参数 类型 必填 默认值 说明
path string 仓库路径
count number 10 显示的提交数量
oneline boolean false 单行显示模式

示例

// 查看最近 10 条提交
GitLog({})

// 查看最近 5 条(单行模式)
GitLog({"count": 5, "oneline": true})

// 查看更多历史
GitLog({"count": 30})

GitShow — 查看提交详情

查看指定提交的详细内容,包括修改的文件和具体差异。

参数

参数 类型 必填 说明
object string 提交哈希、标签名或分支名
path string 仓库路径
format string 输出格式:full(默认)、stat(统计)、name-only(仅文件名)

示例

// 查看提交详情
GitShow({"object": "a1b2c3d"})

// 仅查看修改的文件列表
GitShow({"object": "a1b2c3d", "format": "name-only"})

// 查看统计信息
GitShow({"object": "HEAD", "format": "stat"})

GitBranch — 管理分支

列出、创建或删除分支。

参数

参数 类型 必填 说明
path string 仓库路径
create string 创建指定名称的分支
delete string 删除指定名称的分支

不带 createdelete 参数时列出所有分支。

示例

// 列出所有分支
GitBranch({})

// 创建新分支
GitBranch({"create": "feature/login"})

// 删除分支
GitBranch({"delete": "feature/old-branch"})

GitCheckout — 切换分支

切换分支、创建并切换到新分支、或恢复文件。

参数

参数 类型 必填 说明
path string 仓库路径
branch string 要切换到的分支名
createBranch string 创建并切换到此分支
file string 从 HEAD 恢复指定文件

示例

// 切换到已有分支
GitCheckout({"branch": "main"})

// 创建并切换到新分支
GitCheckout({"createBranch": "feature/api"})

// 恢复文件到 HEAD 版本
GitCheckout({"file": "src/app.ts"})

GitRemote — 管理远程仓库

查看、添加、删除或修改远程仓库配置。

参数

参数 类型 必填 说明
path string 仓库路径
action string 操作:list(默认)、addremoveset-url
name string 远程仓库名(如 origin)
url string 远程仓库 URL(add/set-url 时需要)

示例

// 列出远程仓库
GitRemote({})

// 添加远程仓库
GitRemote({"action": "add", "name": "origin", "url": "https://your-git-host.com/owner/repo.git"})

// 修改远程仓库 URL
GitRemote({"action": "set-url", "name": "origin", "url": "https://your-git-host.com/owner/new-repo.git"})

// 删除远程仓库
GitRemote({"action": "remove", "name": "upstream"})

GitStash — 暂存更改

临时保存或恢复工作区更改。

参数

参数 类型 必填 说明
path string 仓库路径
action string 操作:push(默认)、popapplylistdrop
message string 暂存说明(push 时使用)
index number 暂存索引(pop/apply/drop 时使用,默认 0)

示例

// 暂存当前更改
GitStash({"action": "push", "message": "WIP: 登录功能"})

// 查看暂存列表
GitStash({"action": "list"})

// 恢复最近的暂存
GitStash({"action": "pop"})

// 恢复指定暂存(保留暂存记录)
GitStash({"action": "apply", "index": 1})

// 删除指定暂存
GitStash({"action": "drop", "index": 2})

GitAdd — 添加到暂存区

将文件添加到 Git 暂存区。

参数

参数 类型 必填 说明
path string 仓库路径
files string 文件路径(默认 . 添加全部),支持 glob 模式

示例

// 添加所有文件
GitAdd({})

// 添加指定文件
GitAdd({"files": "src/app.ts"})

// 添加多个文件
GitAdd({"files": "src/app.ts src/utils.ts"})

// 使用 glob 模式
GitAdd({"files": "src/**/*.test.ts"})

GitCommit — 提交更改

提交暂存区的更改。

参数

参数 类型 必填 说明
path string 仓库路径
message string 提交信息

提交信息验证

  • 支持自然语言(包括中文)
  • 允许括号 ()、引号 ""/''、连字符 -
  • 阻止命令注入(;&|、反引号、$() 等)
  • 最大长度 4096 字符

示例

// 中文提交信息
GitCommit({"message": "修复登录页面样式问题"})

// 带括号的提交信息
GitCommit({"message": "feat(auth): 添加 OAuth2 登录支持"})

// 常规格式
GitCommit({"message": "fix: resolve null pointer in handler"})

GitPush — 推送代码

将本地提交推送到远程仓库。

参数

参数 类型 必填 说明
path string 仓库路径
remote string 远程仓库名(默认 origin)
branch string 分支名

示例

// 推送到 origin
GitPush({})

// 推送到指定远程和分支
GitPush({"remote": "origin", "branch": "main"})

GitPull — 拉取代码

从远程仓库拉取并合并代码。

参数

参数 类型 必填 说明
path string 仓库路径
remote string 远程仓库名(默认 origin)
branch string 分支名

示例

// 拉取并合并
GitPull({})

// 拉取指定远程分支
GitPull({"remote": "upstream", "branch": "main"})

GitRepoFetch — 获取远程仓库

获取 Git 托管平台的项目代码,用于学习开源项目的设计和实现。

参数

参数 类型 必填 说明
url string Git 仓库 URL
mode string 模式:overview(概览)、tree(目录)、file(文件)。默认自动判断
depth number 目录深度(默认 2)
maxFiles number 最大文件数(默认 20)
maxSize number 最大文件大小 KB(默认 50)

支持的 URL 格式

  • 完整 URL:https://your-git-host.com/owner/repo
  • 带路径:https://your-git-host.com/owner/repo/tree/main/src
  • 文件 URL:https://your-git-host.com/owner/repo/blob/main/README.md
  • 简写格式:owner/repo

示例

// 项目概览(README + 目录 + 主要文件)
GitRepoFetch({"url": "https://your-git-host.com/owner/repo"})

// 浏览特定目录
GitRepoFetch({"url": "https://your-git-host.com/owner/repo/tree/main/packages"})

// 获取特定文件
GitRepoFetch({"url": "https://your-git-host.com/owner/repo/blob/main/README.md"})

// 使用简写
GitRepoFetch({"url": "owner/repo"})

常见工作流

1. 检查状态并提交

// 1. 查看修改
GitStatus({})
GitDiff({})

// 2. 添加文件
GitAdd({"files": "src/app.ts"})

// 3. 提交
GitCommit({"message": "feat: 添加用户登录功能"})

2. 推送到远程

GitPush({"remote": "origin", "branch": "feature/login"})

3. 分支管理

// 创建并切换到新分支
GitCheckout({"createBranch": "feature/api"})

// 完成开发后切回主分支
GitCheckout({"branch": "main"})

// 删除功能分支
GitBranch({"delete": "feature/api"})

4. 暂存和恢复

// 临时保存工作
GitStash({"action": "push", "message": "WIP"})

// 切换分支处理紧急任务
GitCheckout({"branch": "hotfix/bug"})

// 处理完毕后恢复
GitCheckout({"branch": "feature/api"})
GitStash({"action": "pop"})

5. 学习开源项目

// 获取项目概览
GitRepoFetch({"url": "owner/repo"})

// 深入查看目录
GitRepoFetch({"url": "owner/repo", "mode": "tree", "depth": 3})

// 查看具体文件
GitRepoFetch({"url": "owner/repo", "mode": "file"})

安全机制

所有 Git 工具内置安全防护:

  • 路径验证:阻止路径遍历(..)和 Shell 元字符注入
  • 命令注入防护:分支名、提交信息等参数经过严格验证
  • 环境变量隔离:子进程使用安全环境变量,防止 API Key 泄漏
  • 超时保护:所有 Git 命令 60 秒超时,防止挂起
  • 进程树清理:超时后完整终止进程组(含子进程)