snapstash
v0.1.7
Published
Snapshot git index or a directory to JSON with optional encryption
Maintainers
Readme
snapstash
English | 简体中文
一个轻量 CLI:将 Git index(已暂存变更)或目录快照为 .snapstash/.backup,可选 AES-256-GCM 加密。
支持复制粘贴:备份文件为纯文本,可复制到新项目后恢复。
安装
npm i -g snapstash或者无需全局安装:
npx snapstash快速开始
- 初始化配置(语种 + 密码 + gitignore):
snapstash init- 备份当前 Git index(已暂存变更):
snapstash- 恢复到当前目录:
snapstash r用法
# 默认:备份 Git index(已暂存) -> .snapstash/.backup
snapstash
# 使用密码加密(可选)
snapstash b --pw 123
# 备份目录而不是 Git index
snapstash b --root ./my-folder
# 恢复到当前目录(可用 --root 指定目录)
snapstash r
# 查看备份信息
snapstash i --pw 123
# 复制备份文本到剪贴板
snapstash b --clipboard
# 使用指定配置文件
snapstash b --config ./config.json
# 创建 .snapstash 模板并写入 .gitignore(如果是 git 仓库)
snapstash init命令与参数
snapstash / snapstash b(备份)
snapstash b [options]参数:
--output, -o <file>输出文件(默认.snapstash/.backup)--config <file>指定配置文件--pw <password>加密密码(为空则仅压缩)--pw-env <ENV>密码环境变量名(默认SNAPSTASH_PW)--no-concurrency禁用并发(单线程)--threads <n>线程数--bigfile-mb <n>大文件阈值(MB)--total-size-mb <n>总大小阈值(MB)--file-count-threshold <n>文件数量阈值--clipboard, --c复制到剪贴板--no-progress关闭进度日志--root, --dir <path>备份目录(文件系统模式)--from <stash|fs>指定来源(默认stash)
snapstash r(恢复)
snapstash r [options]参数:
--input, -i <file>输入文件(默认.snapstash/.backup)--config <file>指定配置文件--root, --dir <path>恢复目录(默认当前目录)--pw <password>解密密码--pw-env <ENV>密码环境变量名(默认SNAPSTASH_PW)--no-progress关闭进度日志
snapstash i(信息)
snapstash i [options]参数:
--input, -i <file>输入文件(默认.snapstash/.backup)--root, --dir <path>备份所属目录(默认当前目录)--pw <password>解密密码--pw-env <ENV>密码环境变量名(默认SNAPSTASH_PW)
snapstash init(初始化)
snapstash init交互步骤:
- 选择语种(en/zh)
- 输入密码(可为空)
配置(.snapstash/config.json)
在项目根目录放置 .snapstash/config.json。如果不存在,会回退到
~/.snapstash/config.json 作为全局配置(只读);备份输出仍写入
[pwd]/.snapstash/.backup(或 --root)。
{
"version": 1,
"lang": "en",
"password": "",
"passwordEnv": "SNAPSTASH_PW",
"concurrency": {
"enabled": true,
"threads": 4,
"bigFileMB": 1,
"totalSizeMB": 5,
"fileCountThreshold": 30
},
"excludes": [".snapstash/", "node_modules/", "dist/", "*.log"]
}password/passwordEnv会在未传--pw时生效concurrency控制并发压缩;设置enabled: false可禁用totalSizeMB当总原始大小达到阈值时触发并发excludes为相对路径匹配,dir/表示目录,*.log为简单通配lang/language支持en(默认)或zh,用于 help 与日志- 词条文件位于
i18n/en.json和i18n/zh.json
- 词条文件位于
配置读取顺序:
--config <file>[project]/.snapstash/config.json~/.snapstash/config.json
说明
- 默认备份来源为 Git index(已暂存变更)。使用
--root或--from fs备份目录。 - 密码可通过
--pw或环境变量SNAPSTASH_PW提供;未提供时只压缩(base64 + brotli)。 - 加密使用 AES-256-GCM + scrypt(开销小、速度快)。
snapstash i可查看加密备份的元信息(version、createdAt、repoRoot、head、payloadEncoding)。snapstash init会创建.snapstash模板并在 Git 仓库中加入.gitignore。--clipboard/--c复制备份文本到剪贴板。- 默认输出进度日志,可用
--no-progress关闭。
