用途:git-hunk 是一个非交互式 CLI,用于检查、暂存、取消暂存和提交精确的文本改动,无需交互式提示。适合需要原子提交、选择性暂存、部分 hunk 暂存的场景。
主要能力:支持 stage 与 unstage 两种模式;可按整个 hunk、change_id、change_key 或行范围选择;提供 scan、show、stage、unstage、commit、resolve、validate 等子命令;支持 --json 输出、--dry-run 预览和 plan 文件批量选择器。
使用方式:先扫描并捕获快照,如 git-hunk scan --mode stage --json;查看可选单元用 git-hunk show --mode stage <hunk-id>;应用选择用 git-hunk stage --snapshot <snapshot-id> --change-key <change-key>;直接提交用 git-hunk commit -m "feat: message" --snapshot <snapshot-id> --change <change-id>。resolve 可将文件加行号提示解析为持久选择器,validate 可在快照过期时恢复选择。
选择器优先级:优先 change_key,其次 change_id,再次 resolve,最后才用原始行范围。change_id 与快照绑定,视为临时;change_key 由改动内容与邻近上下文派生,可跨无关重扫存活,但不保证在邻近上下文编辑、重命名或方案变更后仍有效。行范围语法为 <hunk-id>:<old|new>:<start-end>。
限制:任何变更命令都必须提供 snapshot_id,每次成功 stage、unstage 或 commit 后应重新扫描。遇到 stale_snapshot 不要盲目重试,应检查 error.details 或运行 validate。冲突、重命名、复制、二进制文件或非 UTF-8 diff 不受支持,需改用普通 git 命令。无暂存内容时 commit 会失败,除非设置 --allow-empty。