Repository navigation
Releases: FnSGit/git-safety-guard
Releases · FnSGit/git-safety-guard
Release list
v0.1.0 — 备份后放行(首发)
v0.1.0 — 备份后放行(首发)
「备份后放行」型 git 安全守卫:丢弃型 git 命令(checkout --/restore/switch -f/reset --hard/clean -f/stash drop|clear)执行前自动备份 diff + untracked + stash,再放行原命令——可能该丢,但绝不无声丢。
特性
- 双入口共享同一 core:pi 原生扩展(
tool_call/tool_result事件)+ PreToolUse hook CLI(Claude Code / Codex) - 备份范围无死角:staged diff + unstaged diff + untracked 文件实体 + stash 破坏类的 stash patch
- 产物自描述:
manifest.json携带 cwd/repoRoot/triggerCommand/diffStat/版本三元组;备份落在~/.git-safety-guard/backups/<时间戳>/(不写/tmp) - 一键恢复:
git-safety-guard restore latest(自保备份 →git apply --check→ 原子 apply → untracked/stash 回填) - fail-open:备份失败/解析失败一律放行,exit 0(备份器不是闸门)
- cd 前缀解析:
cd <other-repo> && git reset --hard的备份落点正确,避免虚假安全感 - 零运行时依赖,TypeScript ESM,Node ≥ 20
安装
pi
pi install git:github.com/FnSGit/git-safety-guard@v0.1.0或下载下方 tarball:
pi install https://github.com/FnSGit/git-safety-guard/releases/download/v0.1.0/git-safety-guard-0.1.0.tgznpm 源(pi install npm:git-safety-guard)待 npm 账号解封后启用。
npm(从 tarball)
npm install https://github.com/FnSGit/git-safety-guard/releases/download/v0.1.0/git-safety-guard-0.1.0.tgz用法
git-safety-guard list # 列出备份
git-safety-guard restore latest # 恢复最近一次
git-safety-guard restore <timestamp> --dry-run # 预览不改动
git-safety-guard restore latest --force # 覆盖已存在文件质量证据
- 87 个 bun test 全通过,
tsc --noEmitclean - 真机冒烟:
pi -e加载扩展、丢弃命令触发备份、manifest.agent="pi"、cd 解析后repoRoot指向目标仓库 - npm pack 21 kB / 27 files(不含 tests/node_modules)
已知边界
~user/...波浪号不展开(v0.2 待办)- 不做 shell 解析,引号内文本可能误报(备份无副作用,成本低)
- 恢复不重建 stash 栈(patch 以
git apply回填工作树) - untracked > 500 文件只记录清单不备份实体内容(manifest 标注
untrackedTruncated)